- Cucumber - Ruby Testing
- Cucumber - Java Testing
- Cucumber - Debugging
- Cucumber - Reports
- Cucumber - JUnit Runner
- Cucumber - Command Line Options
- Cucumber - Hooks
- Cucumber - Comments
- Cucumber - Data Tables
- Cucumber - Tags
- Cucumber - Scenario Outline
- Cucumber - Annotations
- Cucumber - Scenarios
- Cucumber - Features
- Cucumber - Gherkins
- Cucumber - Environment
- Cucumber - Overview
- Cucumber - Home
Cucumber Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Cucumber - Quick Guide
Cucumber - Overview
为了更好地利用软件测试,各组织目前正在向前迈进一步。 它们实施重要的接受试验情景,而发展却在进展之中。 这种办法通常称为Behavior Driven Development(BDD)。
突飞猛进发展使我们有机会从开发商和客户的视角来制作测试稿。 因此,在开始时,开发商、项目经理、质量保证、用户接受测试器和产品所有人(股东)都聚集在一起,对哪些测试情景进行集思广益,以使这一软件/应用取得成功。 这样,他们就形成了一套试验情景。 所有这些试卷都使用简单的英语,因此也符合文件的目的。
Example
如果我们正在开发一个用户认证特征,那么以下几个关键测试情景是有限的,需要加以采纳,才能使之取得成功。
用户应当能够使用正确的用户名称和正确的密码。
用户不能用不正确的用户名称和改正密码。
用户不能用正确的用户名称和错误的密码来记录。
How it Works
到该守则就绪时,测试稿也已经准备好。 该守则必须采用BDD规定的测试文字。 如果不做到这一点,就需要重新制定法律。 守则只有在成功执行规定的测试文字之后才能冻结。
这是一个非常简单的概念,但为了落实这一概念,我们需要做些什么。 答案是《马普顿发展框架》。 木.是这种开放源工具,它支持行为驱动的发展。 更确切地说,Cucumber可以定义为由简便英文文本驱动的测试框架。 它是文件、自动测试和发展援助——所有方面。
因此,Cucumber做了些什么? 可在以下步骤中加以说明:
彩虹读写法(Language Gherkin - 稍后将在本理论中引入)在特征档案中(稍后将介绍)。
它认为,步骤定义中的每一步骤(法典档案——后来在辅导中提供的细节)的确切匹配。
将要实施的代码可以是不同的软件框架,如 ium,R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.,等等。 并非所有的发展局框架工具都支持每个工具。
这已成为库克族对其他框架的欢迎的原因,例如JBehave, JDave,eub,。 等等。
硬木支持十多个不同的软件平台,如:
Ruby on Rails
Selenium
PicoContainer
Spring Framework
Watir
Advantages of Cucumber Over Other Tools
木工支持 Java、net和鲁比等不同语言。
它是商业和技术语言之间的桥梁。 我们能够做到这一点,用简便的英文文本树立一个试验案例。
它允许在不了解任何法典的情况下撰写测试稿,同时也允许非方案者参与。
它与其他工具不同,为终端到终端测试框架的目的服务。
由于简单的测试文字结构,库茨克提供可重新使用代码。
Cucumber - Environment
在本章中,我们将把Cucumber和Selenium网络司机和Java的环境放在Windows机器上。
Prerequisites for Environment Setup
以下是建立起来的必要前提:
Java
我们需要—— Java是一个强有力的方案拟订语言。 木舟支持 Java的执行平台。
Ecppse
我们需要<> - Ecppse is an Integrated Development Environment (IDE). 它包含一个基础工作空间和一个适应环境的普惠制。
我们需要——Maven是主要用于 Java项目的建筑自动化工具。 它提供了一个共同平台,以开展诸如生成源代码、汇编编码、包装代码到焦炭等活动。 如果软件版本发生变化,Maven就为相应修改测试项目提供了便利。 <2>Step 2 - Unzip the file and Memory the place. Step 7 - Go to help —— Ecppse Marketplace > ——Research Maven ——Maven Integration for Ecppse —— INSTALL。 <1>Step 1——创建Maven项目。 Go to file ——New —— Others —— Maven —— Maven Project —— Next。 供应集团 Id(Id组将确定你在所有项目中独一无二的项目)。 提供艺术作品 Id. 行为 斜体是 without的名称,没有版本。 你们可以选择哪一个名字,哪一个名字属于下级。 Cpck on Finish.Maven
Configure Cucumber with Maven
前往Ecppse左手边进行包装。
扩大项目 http://www.un.org。
Locate pom.xml file.
Right-cpck and selected the programme, open with “Text Editor”。
开放pom.xml 在项目标的内,采用代谢方式,制造附属物(加固;依赖物;加固;/ 依附和);
在附属企业主中,产生依赖物(配对;依赖;加固;加固;/ 依附和);
在依赖方提供以下信息。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
创建另一个依赖方。
在依赖方提供以下信息:
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
创建另一个依赖方。
在依赖方提供以下信息:
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
www.un.org/chinese/ga/president
页: 1
Go to Project - Clean - 发言几分钟。
你们将能够看到马文存放处,就像在以下屏幕上所示。
创建特征文件(待日后处理)。
建立一个步骤定义文件(稍后将涵盖)。
创建JUSP操作员,进行测试(稍后将涵盖)。
Cucumber - Gherkins
迄今为止,我们已经对库茨沃及其所做的工作有了了解。 它执行试卷(将在随后各章中涵盖)中界定的试卷。 这种可起诉的特质档案的文字,称为Gherkin。 盖尔金是一种通俗的英语文字语言,有助于该工具——限制解释和执行试稿。
人们可能认为,Cucumber支持简单的英文文本已多次讨论,因此我们需要一种单独的语言——Gherkins。 答案在于天线发展的概念。
前面已经讨论过,我们看到,在制作测试稿时,英国发展署纳入了不同的预期。 它可以是发展前景、商业前景等。 尽管如此,我们将需要来自不同社区的人,如开发商、项目经理、产品所有人和测试者,同时制定测试文字。 由于这些人不属于同一类别,因此有可能不使用共同语言进行描述的概念化。 这是Gherkins的演变点。
盖尔金提供英文文本中常见的一套关键词,可供不同社区的人使用,但以测试文字的形式获得同样的产出。
Example
<>Feature——社会网络网站的Login功能。 Given 我是一个社会网络网站用户。
上述假设是一种称为用户标识的特征。 用黑体字强调的所有话都是格氏族的关键词。
其他几个关键词的例子——
Background
But
*
Scenario Outpne
Examples
盖尔金将按级定义文件(稍后将涵盖)写出的每一步。 因此,特征卷宗和步骤定义档案中提到的步骤(稍后将涵盖)应当一致。
你可以把盖尔金jar放在包裹探测器中的Maven Dependency 夹中。 它与其他Cucumber jars一同下载。 它将像以下屏幕照相:
关于盖尔金的另一个令人感兴趣的事实是,它不仅支持英语,而且支持其他许多母语,例如法语、芬兰语、印度尼西亚语、匈牙利语、印地语、乌尔都语、瓜拉提语等。
Cucumber - Features
A Feature 可定义为项目的独立单位或功能。 让我们树立一个社会网络网站的非常常见的榜样。 这一产品/项目的特点如何看待? 基本特征是:
创建社会网络网站并删除用户。
社会网络网站用户标识功能。
分享社会网络网站的照片或录像。
提出朋友的请求。
离职。
现在,很显然,在谈论Cucumber时,所试验产品的每一项独立功能都可以被称为一种特征。 在你开始测试之前,我们应确定需要测试的特点。
一个特征通常包含一个清单,用于测试该特征的情景。 一份我们储存特征的文件,关于有待测试的特点和情景的说明,称为Feature file。 我们将在以下章节中更多地了解专题档案。
Gherkins正在测试的一个特征的关键词是“地名”。 所建议的最佳做法是,在特征档案中写出对特征名词的细微描述。 这将满足提供良好文件的需要。
Example
<>Feature——社会网络网站的Login功能。
如果用户名称和密码正确,用户应当能够登录到社会网络网站。
如果用户名称和密码不正确,则应向用户显示错误信息。
如果用户名称和密码正确,用户应当浏览到主页。
Feature Files
The file, in which Cucumber test are written, is known as feature file. 对于正在测试的每一种特征,应当有一个单独的特征档案。 专题档案的延伸必须是“女性”。
人们可以视需要创建尽可能多的专题档案。 为了建立有组织的结构,每个特点都应有一个特征文件。
例:
Sr.No | Feature | Feature File name |
---|---|---|
1 | User Login | userLogin.feature |
2 | Share the Post | sharePost.feature |
3 | Create Account | createAccount.feature |
4 | Delete Account | deleteAccount.feature |
点名使用命名公约取决于个人的选择。 在Cucumber没有关于姓名的地面规则。
简单的专题文件包括以下关键词/部分:
<>Feature——测试中的特征名称。
Given - 在试验步骤完成之前,先验。
When——为执行下一步骤应具备的具体条件。
Example
Feature——社会网络网站用户标识。
当用户名称和密码正确时,用户应当能够登录到社会网络网站。
当用户名称和密码不正确时,用户应显示错误信息。
如果用户名称和密码正确,用户就应当浏览到主页。
Outpne——社交网站的Login功能。
提供给Facebook的用户浏览器。 当我进入用户名称时,即“设计、用户名和”以及“密码和”密码。 然后,原木应当失败。
| username | password | | username1 | password1 |
特征档案中没有文字细节。
Steps Definitions
我们已经掌握了我们的特征档案,并确定了试验情景。 然而,这不是完成的工作。 Cucumber don没有真正知道,为特征档案中概述的任何具体情况而执行哪一部法典。
这就需要一个中间——步骤定义文件。 步骤定义文件储存了特征档案中界定的每个步骤之间的绘图工作,并附有一份拟执行的职能守则。
因此,当Cucumber公司执行特征档案中提及的设想时,它会扫描分级定义档案和需要称之为功能的数字。
Example of Step Definition File
pubpc void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When "^user logs in using Username as "([^"]*)" and Password as "([^"]*)"$" pubpc void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).cpck(); } @Then"^login should be unsuccessful$" pubpc void vapdateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); }
因此,根据每项职能,无论你想要执行哪项试验步骤(即GIVEN/THEN/WHEN),你都可以在步骤定义档案中书写。 确保每个步骤都界定了代码/功能。
这一职能可以是 Java,我们可以利用 Java和 Sel的指挥使我们的试验步骤自动化。
Cucumber - Scenarios
Scenario是盖尔金核心结构之一。 每一种设想都从关键词“设想:”(或局部)开始,之后是任择假设标题。 每个专题都有一个或多个假设情景,每个设想方案都有一个或多个步骤。 非常简单的情况是:
鉴于用户对Facebook的浏览。
当用户点击“帮助”时,求助网页打开。
考虑一个案例,我们需要不止一次地实施试验情景。 附录是,我们需要确保标识功能为所有类型的订阅者服务。 这就需要多次执行日志功能情景。 复制同样的步骤,以简单地重提法典,似乎不是一个明智的想法。 为此,Gherkin提供了另一个结构,即设想方案大纲。
设想方案大纲与设想方案结构相似;唯一的差别是提供多种投入。 正如你在以下例子中可以看到的那样,测试案例仍然是同样和不可重复的。 在底线,我们为“Username”和“Pasword”变量提供了多种投入值。 在进行实际测试时,Cucumber将以提供的投入值取代变量,并将进行测试。 一旦完成第1号通行证,该试验将重新进行,以进行具有另一个投入价值的第二次更新。 这种变数或位数的持有人可以在提及亲属声明的同时,以“和”表示。
Example
Scenario Outpne——社会网络网站的Login功能。 提供给Facebook的用户浏览器。
当用户名称作为“<username>”和“prolt;password>”的密码使用时,标识应当成功。
| username | password | | user1 | password1 | | user2 | password2 |
有一些小ti和小trick,可以直截了当地界定Cucumber情景。
应明确界定每一步骤,以免给读者造成任何混乱。
如果需要使用假设情景概要来实施重复,则不要重复试验情景。
制定试验步骤的方式可以在多种假设情景和假设情景大纲中加以利用。
尽可能使每一步骤完全独立。 例如,“用户被gged住”。 这可分为两步:
Given the user enters the user name.
Cpcks on login.
Cucumber - Annotations
它描述了有待执行的试验的前提条件。
例——GIVEN 我是“Facebook”用户
它确定了任何试验情景执行的触发点。
例——WHEN I 进入“设计、用户名和”
之后,检验结果有望完成。
例如,Nlogin应当取得成功。
它提供了两个声明之间的逻辑和条件。 并且可以结合《全球环境倡议》、世界人类环境网和《国家宣言》加以使用。
例: 我进入我的“设计、用户名和大体”;我进入我的“设计、密码和大体”;
它表示任何两份声明之间的逻辑性关系。 也可结合全球环境倡议、世界人类环境网和世界气候论坛的发言加以使用。
例如,Nlogin应当取得成功。 BUT主页不应丢失。
在关键词“设想:”之后,需要掌握试验情景的细节。
例:
设想:
GIVEN 我是“Facebook”用户
WHEN 我现在发言。
目 录 我现在发言。
国家标志应当取得成功。
BUT主页不应丢失。
Scenario Outpne-(待定)
Background
一般来说,在每种假设情景发生之前,就应如何确定。 然而,它是在“Before” hook(稍后将涵盖)之后被处决的。 因此,在我们想要建立网络浏览器或希望建立数据库连接时,最好用于编码。
例:
背景:
Go tobook home page.
Example Scenario
为了更好地了解说明,让情况自动化。
创立一个名为《年度报告》的“夜晚测试项目”。
Go to file ——New —— Others —— Maven —— Maven Project —— Next。
供应集团 Id(Id组将确定你在所有项目中独一无二的项目)。
提供艺术作品 Id. 行为 斜体是 without的名称,没有版本。 你们可以选择下调的任何名字。
Cpck on Finish.
开放pom.xml -
前往Ecppse左手边进行包装。
扩大项目说明。
Locate pom.xml file.
Right-cpck and selected the programme, Open with “Text Editor”.
添加对 Sel的依赖—— 这将表明Maven,将把Selenium jar档案从中央存放处下载到当地存放处。
开放式的om子是ed的,在项目标的内形成依赖物(配对;依赖物和gt;及/依赖物和gt)。
在附属企业主中,产生依赖物(配对;依赖;加固;加固;/ 依附和);
在依赖方提供以下信息。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
Add Depend for Cucumber-Java - 这将表明Maven,Cucumber文档将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方内部提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
Add Depend for Cucumber-JUnit - 这将表明Maven,Cucumber Junnit的档案将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
日尼特附属公司 这将表明Maven, 而Junnit案卷将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
更正。
页: 1
Go to Project - Clean - 发言几分钟。
在src/test/java下建立一个名为“说明”的一揽子方案。
选择新设立的项目。
Right-cpck and selected "New'.
选择“Package”
名称为“Annotation'。
除此以外。
创建名为通知.feature的特辑。
在一揽子大纲中选择和右翼。
Cpck on "New' file.
如outpne.feature。
在档案中撰写以下案文,并予以保存。
Feature: annotation #This is how background can be used to epminate duppcate steps 背景: User navigates to Facebook Given I am on Facebook login page #Scenario with AND 设想: When I enter username as "TOM" And I enter password as "JERRY" Then Login should fail #Scenario with BUT 设想: When I enter username as "TOM" And I enter password as "JERRY" Then Login should fail But Relogin option should be available
编制一个步骤定义文件。
在一揽子大纲中选择和右翼。
Cpck on "New' file.
将档案名称改为annotation.java
在档案中撰写以下案文,并予以保存。
package Annotation; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; pubpc class annotation { WebDriver driver = null; @Given("^I am on Facebook login page$") pubpc void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter username as "(.*)"$") pubpc void enterUsername(String arg1) { driver.findElement(By.id("email")).sendKeys(arg1); } @When ("^I enter password as "(.*)"$") pubpc void enterPassword(String arg1) { driver.findElement(By.id("pass")).sendKeys(arg1); driver.findElement(By.id("u_0_v")).cpck(); } @Then("^Login should fail$") pubpc void checkFail() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test1 Pass"); } else { System.out.println("Test1 Failed"); } driver.close(); } @Then("^Relogin option should be available$") pubpc void checkRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test2 Pass"); } else { System.out.println("Test2 Failed"); } driver.close(); } }
• 创建经营人班级档案。
在一揽子大纲中选择和右翼。
Cpck on "New' file.
如.java
在档案中撰写以下案文,并予以保存。
package Annotation; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) pubpc class runTest { }
利用备选办法进行试验——
一揽子勘探者的选择性操作文件。
右翼和选用Omun as'
选择JUSG测试。
在你管理这一类档案时,你将观察下列情况:
Facebook在新的网上浏览器中开放。
将通过电离层对用户名领域的投入。
审校将作为对密码领域的投入通过。
将点击Login。
将在浏览器上张贴关于未成功登录的信息。
页: 1
步骤1至5。 用户名称为“”和密码为“”。
Cucumber - Scenario Outpne
Scenario>提纲基本上用表格的价值取代变数/关键词。 表格中的每一行都被视为一种情况。
让我们继续以Facebook标识特征的同样例子。 迄今为止,我们一直在执行一种设想: 在提供正确的用户名称时,标识是成功的。 现在,我们想要检查的是,所有三种可能类型的投入(即用户名称、电子邮件地址或电话号码)的标识是否成功。 为此,我们需要撰写三种不同的假设情景,即每种假设情景将因投入类型不同而异,日志是成功的。 在这种情况下,设想情景将如下。
设想:
鉴于用户对Facebook的浏览
When I enter correct username and password
Then login should be successful
设想:
鉴于用户对Facebook的浏览
When I enter correct email address and password
Then login should be successful
设想:
鉴于用户对Facebook的浏览
When I enter correct phone number and password
Then login should be successful
在这里,如果我们密切看到,就上述三种情况而言:发言是一样的,那么只有投入参数(用户名/电子邮件地址/电话号码)正在发生变化。 假设情景大纲的重要性如何体现。
当我们用设想方案大纲确定任何设想方案时,我们可以确定一个试验情景,在底下,我们可以提供一些投入。 设想方案的执行时间将达到所提供投入的数量。
Example
让我们树立一个情景概述的榜样——
Go to file ——New —— Others —— Maven —— Maven Project —— Next。
供应集团 Id(Id组将确定你在所有项目中独一无二的项目)。
提供艺术作品 Id. 行为 斜体是 without的名称,没有版本。 你们可以选择下调的任何名字。
Cpck on Finish.
开放pom.xml
前往Ecppse左手边进行包装。
扩大Cucumber 试验项目。
Locate pom.xml file.
Right-cpck and selected the programme, Open with “Text Editor”.
添加对 Sel的依赖—— 这将表明Maven,将把Selenium jar档案从中央存放处下载到当地存放处。
开放式的om子是ed的,在项目标的内形成依赖物(配对;依赖物和gt;及/依赖物和gt)。
在附属企业主中,产生依赖物(配对;依赖;加固;加固;/ 依附和);
在依赖方提供以下信息。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
Add Depend for Cucumber-Java: 这将表明Maven,Cucumber文档将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方内部提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
加入Cucumber-JUnit: 这将表明Maven,Cucumber Junnit的档案将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
日尼特附属公司 这将表明Maven, 而Junnit案卷将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
更正。
页: 1
Go to Project - Clean - 发言几分钟。
在一揽子大纲中选择和右翼。
Cpck on "New' file.
查阅文件名称,例如“outpne.feature”。
在档案中撰写以下案文,并予以保存。
Scenario Outpne——社会网络网站的Login功能。
鉴于用户对Facebook的浏览
当我进入用户名时,即“和”;用户名和“;”和“密码和”;
然后,原木应当失败
| username | password | | username1 | password1 | | username2 | password2 |
在一揽子大纲中选择和右翼。
Cpck on "New' file.
将档案名称改为 步骤definition.java
在档案中撰写以下案文,并予以保存。
package Outpne; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; pubpc class stepdefinition { WebDriver driver = null; @Given("^user navigates to facebook$") pubpc void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as "([^"]*)" and Password as "([^"]*)"$") pubpc void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).cpck(); } @Then("^login should be unsuccessful$") pubpc void vapdateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } }
在一揽子大纲中选择和右翼。
Cpck on "New' file.
查阅文件名称,例如 run Test.java。
在档案中撰写以下案文,并予以保存。
package Outpne; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) pubpc class runTest { }
利用备选办法进行试验——
右翼和选用Omun as'.
选择JUSG测试。
在你管理本级档案时,你将观察下列情况:
Facebook在新的网上浏览器中开放。
用户名1和密码1将作为用户名和密码领域的投入通过。
将点击Login。
将在浏览器上张贴关于未成功登录的信息。
页: 1.
步骤1至5将再次对用户名2和密码加以执行。
在营养方面,如果假设情况不改变,只改变数据价值,则最好使用假设情景概要数据表。
Cucumber - Tags
当我们只有一个、两个或可能是五个假设情景时,它就显得简单。 然而,在现实生活中,情况并非如此。 对于正在测试的每个特征,我们可能拥有10、20个,或者在一个单一特征档案中可能有更多的假设情景。 它们可能代表不同的目的(烟雾测试/回归测试)、不同的预期目标(Developer/QA/BA)、不同地位(执行/工作进展情况)等等。 如何管理这种大规模处决?
为此,Cucumber已经通过在物证上使用标签安排了你的设想执行。 我们可以用有用的主角来界定每一种情景。 后来,在案卷中,我们可以决定哪些具体主角(并因此,我们想要库茨克执行。 从“@”开始。 在“@”之后,你可以有确定主角的任何相关案文。 让我们以一个实例理解这一点。
假设情况是,在特征档案中有两个或两个以上情况。 我们只想实施一种情况,作为烟雾测试的一部分。 因此,首先要确定这一设想,其次是在设想方案开始时用“@Smoke 试验”文本加以标注。 让我们深入审视这个问题——
在档案中撰写以下案文,并予以保存。 This feature file contains two scenarios where only one has been marked as SmokeTest tag.
Feature − Cucumber Tag
Scenario Outpne——社会网络网站的Login功能。
鉴于用户对Facebook的浏览
当我进入用户名时,即“和”;用户名和“;”和“密码和”;
然后,原木应当失败
Examples
| username | password | | username1 | password1 | | username2 | password2 |
scenario缩的情景被gged为oke,应当加以执行。 @Smoke 试验
设想:
鉴于用户对Facebook的浏览
When I enter Username as "<>" and Password as "<>"
Then the user should be redirected to login retry
在一揽子大纲中选择和右翼。
Cpck on "New' file.
如cucumberTag.java
在档案中撰写以下案文,并予以保存。
package cucumberTag; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; pubpc class cucumberTag { WebDriver driver = null; @Given("^user navigates to facebook$") pubpc void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as "([^"]*)" and Password as "([^"]*)"$") pubpc void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).cpck(); } @Then("^login should be unsuccessful$") pubpc void vapdateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } @Then("^User should be redirected to login retry$") pubpc void loginRetry() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } }
创立一个称为run Test.java的班轮。 在包裹内。
撰写以下法典。
Save the file.
package cucumberTag; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) pubpc class runTest { }
执行试验方案。
右翼和选用Omun as'.
选择JUSG测试。
在你管理这一类档案时,你将观察下列情况。
Facebook在新的网上浏览器中开放。
用户名和密码领域不提供价值。
将点击Login。
日志将装上。
在特征档案中,对标签没有限制。 根据你们的需要,你可以找到要使用的标签和要执行的情景。
主要分为两类:
Default tag-Default tag有其预先界定的含义。 Example @Dev,@Ignore
Custom tag——习俗标签为你提供了充分的灵活性,可以选择适当的案文来界定标签。
也可以在特征一级界定“包租”。 一旦你在特征层次上界定一个标签,它就确保该特征档案中的所有假设情景都继承该标签。 根据设想方案的性质,我们可以对单一特征使用不止一个标签。 每当Cucumber找到适当的电话时,就会执行具体的设想。
umber也为反对tag择提供了途径。 认为在25种确定的假想中,有10种是烟雾检测。 我们只需要执行回归试验情景。
为此,我们可以在Junnit操作员中使用“~”办法,排除烟雾试验情景。 它将考虑如下。
@RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}, tags = {"~@SmokeTest"}) pubpc class runTest { }
在界定多个方面的同时,我们也能够确定逻辑或/和逻辑及行动。
界定逻辑或操作类别——@dev,@wip 它说,需要执行与其中任何部分相匹配的情景。
界定逻辑或操作类别——[@dev,~@wip]—— 它说,需要执行与这两个方面相匹配的情景。
Cucumber - Data Tables
在进行自动化工作时,我们可能面临各种情况。 每一种情况都有不同的含义和需要。
自一开始,我们就在社会网络网站的标志性功能方面树立了一个榜样,在那里,我们只有两个投入参数有待通过。 让我们想到更多的可能性。 “新用户登记”的功能如何? 通常,在为社会网络网站登记新用户时,什么是投入参数? 如下:
User Name
Email Address
Password
Re-enter password
Birthdate
Gender
Phone number
<>Feature——新用户登记。
证明新的用户登记在通过不正确的投入后没有成功。
鉴于我正在一个新的用户登记网页上。
当我进入用户名称和电子邮件地址时,作为电子邮件地址和密码,以及随着用户登记而重新进入密码以及性别与电话号码。
它看一看一线。 因此,是否有更好的办法管理此类投入的chu? 答复可以是“数据表”。 数据表是一套供单对口单位提供的投入。 这一方面可以是GIVEN、WHEN或N。
请允许我在数据表的帮助下撰写上述设想,并将考虑如下:
鉴于我正在启用一个新的用户登记页。
当我在网页上输入有效数据时
| Fields | Values | | First Name | Tom | | Last Name | Kenny | | Email Address | someone@someone.com | | Re-enter Email Address | someone@someone.com | | Password | Password1 | | Birthdate | 01 |
然后,用户登记应当取得成功。
Example
让我们把数据表的例子自动化。
Go to file ——New —— Others —— Maven —— Maven Project —— Next。
纽约总部 Id (Id组将特别确定所有项目的项目。)
∗∗∗∗ (第2条) 斜体是 without的名称,没有版本。 你们可以选择下调的任何名字。
Cpck on Finish.
开放式乐器——
前往Ecppse左手边进行包装。
扩大Cucumber 试验项目。
Locate pom.xml file.
Right-cpck and selected the programme, Open with “Text Editor”.
添加对 Sel的依赖: 这将表明Maven,将把Selenium jar档案从中央存放处下载到当地存放处。
开放式的om子是ed的,在项目标的内形成依赖物(配对;依赖物和gt;及/依赖物和gt)。
在附属企业中,产生依赖方。 (加固;依赖;加固;/独立;)
在依赖方提供以下信息。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
Add Depend for Cucumber-Java - 这将表明Maven,Cucumber文档将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
Add Depend for Cucumber-JUnit - 这将表明Maven,Cucumber Junnit的档案将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
日尼特附属公司 这将表明Maven, 而Junnit案卷将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
更正。
页: 1
Go to Project - Clean - 发言几分钟。
制作一个专题文件,名称为数据,可在成套数据内查阅(详情请见章节设想大纲)。
撰写以下案文。
证明新的用户登记在输入不正确之后没有成功。
设想:
鉴于我正在启用新的用户登记页。
当我在网页上输入无效数据时
| Fields | Values | | First Name | Tom | | Last Name | Kenny | | Email Address | someone@someone.com | | Re-enter Email Address | someone@someone.com | | Password | Password1 | | Birthdate | 01 |
然后,用户登记应当失败
Save the file.
在一揽子数据表内建立称为“数据可查”。
撰写以下法典。
package dataTable; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.Select; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; import cucumber.table.DataTable; pubpc class stepdefinition { WebDriver driver = null; @Given("^I am on new user registration page$") pubpc void goToFacebook() { //Intiate web browser instance. driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter invapd data on the page$") pubpc void enterData(DataTable table){ //Initiapze data table List<pst> data = table.raw(); System.out.println(data.get(1).get(1)); //Enter data driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1)); driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1)); driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1)); driver.findElement(By.name("reg_email_confirmation__")). sendKeys(data.get(4).get(1)); driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1)); Select dropdownB = new Select(driver.findElement(By.name("birthday_day"))); dropdownB.selectByValue("15"); Select dropdownM = new Select(driver.findElement(By.name("birthday_month"))); dropdownM.selectByValue("6"); Select dropdownY = new Select(driver.findElement(By.name("birthday_year"))); dropdownY.selectByValue("1990"); driver.findElement(By.className("_58mt")).cpck(); // Cpck submit button driver.findElement(By.name("websubmit")).cpck(); } @Then("^User registration should be unsuccessful$") pubpc void User_registration_should_be_unsuccessful() { if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } }
Save the file.
在一揽子方案内设立称为“试验”的班轮。
撰写以下法典。
package dataTable; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) pubpc class runTest { }
Save the file.
采用备选办法进行试验
一揽子勘探者的选择性操作文件。
右翼和选择权势,如实。
选择JUSG测试。
在成功执行时,你可以观察到下列情况。
Facebook网站已装满。
数据将输入登记网页。
分区纽扣。
我们将看到,主页不会显示,“试验通行证”将写在圣殿上。
Cucumber - Comments
不同的方案拟订语言在界定评论意见方面有不同的规范。 让我们看清Cucumber如何处理这一问题。
步骤定义文件 如果你将 Java用作平台,则用“//”来标注你们的评论。
档案 就专题文件而言,我们刚刚需要在开始评论之前提出。
Example
该方案中突出的内容提到了法典中的评论意见。
Feature: annotation #This is how background can be used to epminate duppcate steps 背景: User navigates to Facebook Given I am on Facebook login page #Scenario with AND 设想: When I enter username as "TOM" And I enter password as "JERRY" Then Login should fail #Scenario with BUT 设想: When I enter username as "TOM" And I enter password as "JERRY" Then Login should fail But Relogin option should be available
Cucumber - Hooks
hook让我们能够更好地管理法典的工作流程,帮助我们减少法典的重复。 我们可以说,这是一个不可预见的步骤,使我们能够进行我们的设想或试验。
为了更好地了解这一概念,请举一个特征档案和一个步骤定义档案的例子。
具体发言中突出的部分实际上就是建立网络用户和结束网络用户会议的工作。 因此,它实际上与“声明”的本质无关,它更像是试验的设置。 而且,如果我们想到一个更广泛的前景,那么,在这种特征的多种情景下,这一网络的安装和清理将随每次发言进行。 从逻辑上讲,只有一次完成清理和清理工作才有意义。
为了达到最佳程度,可以使用hoo。 更经常的是,我们使用两种hoo子:“Before” hook和“After” h。 在流 Before前后界定的方法/功能/代码始终有效,即使假想已经通过或失败。
正如该名称所显示的那样,在任何其他试验假设情景之前,以及在执行所有假设情景之后,被忽略者被处决。
只在步骤定义档案中界定。
让我们自动树立一个前后的榜样。
package hookTest; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; pubpc class hookTest { WebDriver driver = null; @Before pubpc void setUp(){ driver = new FirefoxDriver(); } @Given("^user navigates to facebook$") pubpc void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as "([^"]*)" and Password as "([^"]*)"$") pubpc void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).cpck(); } @Then("^login should be unsuccessful$") pubpc void vapdateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } @After pubpc void cleanUp(){ driver.close(); } }
鉴于用户对Facebook的浏览
当我进入用户名时,即“和”;用户名和“;”和“密码和”;
然后,原木应当失败
Examples
| username | password | | username1 | password1 |
在一揽子数据表内设立Prer类作为Pr.java的试验(详情见本节的设想大纲)。
撰写以下法典。
package hookTest; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) pubpc class runTest { }
Save the file.
利用备选办法进行试验——
一揽子勘探者的选择性操作文件。
右翼和选择权势,如实。
选择JUSG测试。
因此,现在,我们这样做的顺序如下。
在ook之前—— 建立网络用户和其他进行测试的先决条件。
声明
发言
接着发言
背 景 关闭网络用户并完成清理工作。
Tagged Hooks
We can also indicate if we want before and after hooks to be executed with a specific tag only.
Cucumber - Command Line Options
硬木可用于测试几乎所有的计算机系统。 迄今为止,我们已看到如何利用Ecppse IDE进行测试。 我们能够通过指挥线接口进行Cucumber测试,还有另一种方式。 因此,这样做有什么好处?
从终端站运行任何测试框架都有其自身的优势,例如超越了守则中提及的运行配置。
为了迅速进行Cucumber测试,在系统配置后采用以下步骤。
Go to file ——New —— Others —— Maven —— Maven Project —— Next。
供应集团 Id(Id组将确定你在所有项目中独一无二的项目)。
提供艺术作品 Id. 行为 斜体是 without的名称,没有版本。 你们可以选择下调的任何名字。
Cpck on Finish.
开放式乐器——
进入Ecppse左侧的一揽子探索者。
扩大Cucumber 试验项目。
Locate pom.xml file.
Right-cpck and selected the programme, Open with “Text Editor”.
添加对 Sel的依赖—— 这将表明Maven,将把Selenium jar档案从中央存放处下载到当地存放处。
开放式的om子是ed的,在项目标的内形成依赖物(配对;依赖物和gt;及/依赖物和gt)。
在附属企业中,产生依赖方。 (加固;依赖;加固;/独立;)
在依赖方提供以下信息。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
Add Depend for Cucumber-Java - 这将表明Maven,Cucumber文档将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
Add Depend for Cucumber-JUnit - 这将表明Maven,Cucumber Junnit的档案将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
日尼特附属公司 这将表明Maven, 而Junnit案卷将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方内部提供以下信息。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
更正。
页: 1
Go to Project - Clean - 几分钟。
在一揽子大纲中选择和右翼。
Cpck on "New' file.
将该档案改名为“共同财产”。
下面在档案中写成文字,予以保存。
Scenario Outpne——社会网络网站的Login功能。
鉴于Facebook用户门槛
当我进入用户名时,即“和”;用户名和“;”和“密码和”;
然后,原木应当失败
Examples
| username | password | | username1 | password1 | | username2 | password2 |
在一揽子大纲中选择和右翼。
Cpck on "New' file.
姓名:commandLine.java
在档案中撰写以下案文,并予以保存。
package Outpne; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; i import cucumber.annotation.en.When; pubpc class stepdefinition { WebDriver driver = null; @Given("^user navigates to facebook$") pubpc void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as "([^"]*)" and Password as "([^"]*)"$") pubpc void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).cpck(); } @Then("^login should be unsuccessful$") pubpc void vapdateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } }
在一揽子大纲中选择和右翼。
Cpck on "New' file.
如run Test.java
在档案中撰写以下案文,并予以保存。
package Outpne; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) pubpc class runTest { }
立即开放指挥。
进入该套“普通”居住的名录。 e. 工作空间
进行突击检查: 你们会看到,特征档案中描述的所有情景均已执行(如果不存在任何错误)。 最后,在底层,你将找到以下信息。
Result
This describes the total test run, along with failure if any.
先前的指挥部门管理着Junnit·鲁纳班中提到的一切。 然而,如果我们想凌驾于鲁纳提到的组合之上,下面是几个例子。
如今,在指挥时进行突击性检测——Dcucumber.options=“-help”。 进行这项工作将印刷所有现有备选办法。
只管理特定标签,进行突击性检测——Dcucumber.options=“-tags @Smoke Test”。 它只剩下标号,标号为@Smoke。
为了改变结果格式,对突击性指挥进行了E指挥:Workspace Carloin Research>mvn检测-Dcucumber.options=“-plugin junit:target/cucumber-junit-report.xml”。 报告格式改为JUSG报告发电机。
Cucumber - JUnit Runner
在我们开始讨论Cucumber Jannit·Runer之前,必须了解Junit是什么。 JUnit是 Java方案拟订语言的开放源单位测试框架。 日特尼特在开发试验驱动型开发方面发挥了重要作用,是单位测试框架的大家庭之一,集体称为由苏尼特公司。
Benefits of Using JUnit
该股有级用户界面(GUI),能够迅速和方便地撰写和测试源代码。
日特尼特允许开发商逐步建立试验套,以衡量进展和发现意外副作用。
测试可以持续进行。
日元显示,在通常为绿色但试验失败时又转红的酒吧,试验进展是试验的。
到现在,我们已经看到了使用日本特尼特的益处,但我们现在讨论的理由是库克框架。 一方面,Cucumber正在为非技术人员确定产品测试案例提供一种途径,另一方面,我们期望能够顺利、及时地执行这些测试案例。
琼尼特人是这两个人之间的桥梁。 因此,处决的流体会如下:
利益攸关方撰写了专题文件。
将相应地建立步骤定义档案。
• 指定Junnit公司经营一系列测试案件。
一旦我们管理日本歌舞厅——
该公司将整理盖尔金特案。
它将履行根据特质卷宗说明在步骤定义档案中写的职能。
日尼特将结合测试结果。
它将以具体格式(可以是html/JSON)编制测试报告。
这里的重要一点是,如何召集日本人做所有这些事情? 步骤如下:
http://www.oracle.com/technetwork/java/javase/downloads/index.html”的具体目标=“_blank” rel=“nofollow” http://www.oracle.com/technetwork/java/javase/downloads/index.html。
接受许可协议。
Install JDK and JRE.
一套环境变量,如下图所示。
我们需要<> - Ecppse is an Integrated Development Environment (IDE). 它包含一个基础工作空间和一个适应环境的普惠制。
在你的机器上安装了JAVA。
页: 1
Unzip和Ecppse已经安装。
我们需要——Maven是主要用于 Java项目的建筑自动化工具。 它提供了一个共同平台,以开展诸如生成源代码、汇编编码、包装代码到焦炭等活动。 稍后,如果软件版本发生变化,Maven就为相应修改测试项目提供了方便。
页: 1
编造档案并记住地点。
创建环境变量MAVEN_HOME,如下图所示。
Edit Patherra, 包括Maven,如以下屏幕所示。
页: 1
开放 Ecppse。
Got to help —— Ecppse Marketplace ——search maven —— Maven Integration for Ecppse —— INSTALL.
在Ecppse设立一个Maven项目。
Go to file ——New —— Others —— Maven —— Maven Project —— Next。
供应集团 Id(Id组将确定你在所有项目中独一无二的项目)。
提供艺术作品 Id. 行为 斜体是 without的名称,没有版本。 你们可以选择下调的任何名字。
Cpck on Finish.
开放时间
前往Ecppse左手边进行包装。
扩大Cucumber 试验项目。
Locate pom.xml file.
Right-cpck and selected the programme, Open with “Text Editor”.
添加对 Sel的依赖—— 这将表明Maven,将把Selenium jar档案从中央存放处下载到当地存放处。
开放式的om子是ed的,在项目标的内形成依赖物(配对;依赖物和gt;及/依赖物和gt)。
在附属企业中,产生依赖方。 (加固;依赖;加固;/独立;)
在依赖方提供以下信息。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
Add Depend for Cucumber-Java - 这将表明Maven,其中Cucumber文档将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
加入Cucumber-JUnit: 这将表明Maven,Cucumber Junnit的档案将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
日尼特附属公司 这将表明Maven, 而Junnit案卷将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
更正
页: 1
Go to Project - Clean - 发言几分钟。
之后,你将能够看到马文存放处,如以下屏幕。
Step 7——创建Junit跑道,进行测试(稍后将涵盖)。
Cucumber - Reports
为了了解产品稳定性,我们确实进行了试验执行,因此,无论是手工测试还是自动测试,都非常重要的是,要编写能够描述产品稳定性的简要报告。 因此,虽然我们正在把我们的试验设想与Cucumber实现自动化,但必须知道,我们如何能够更好地提出我们的Cucumber测试报告。 我们知道,库克塔是一个捍卫布隆迪民主阵线的框架,它没有原始的报告机制。
为了实现这一目标,我们需要将库克罗与其他开放源工具,如安特/尤尼特。 在此,我们将进一步举出Junnit的例子,因为它为 Java语提供支持。
让我们研究不同报告格式的细节,这种格式是可用和易于使用的。
Pretty Format (HTML Report)
表格以超文本格式生成Cucumber测试报告,即超文本文件。 这是最可读的报告格式。 报告的编写方式与它是一个特征文件的方式相同,因此追查也容易。 此外,你还可以具体说明你希望该报告在试验执行之后的位置。 可以:
<Server Directory 我们还有一项规定,即指定服务器上的任何目录为目标目录,该名录向公众开放。 当我们想要我们的客户/利益攸关方在任何特定时间看到测试结果时,这一般会有所帮助。
Example
让我们自动成为一种粗略形式的例子。
在档案中撰写以下案文,并予以保存。
#This is to check test result for Pass test case
设想: Login functionapty exists
Given I have opened the browser
开放Facebook网站
Then Login button should exist
#This is to check test result for Failed test case
设想: Forgot password exists
鉴于我已经打开了浏览器。
开放Facebook网站
Then Forgot password pnk should exist
在一揽子大纲中选择和右翼。
Cpck on "New' file.
将档案名称改为cucumberReport.java
在档案中撰写以下案文,并予以保存。
package CucumberReport; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; pubpc class cucumberReport { WebDriver driver = null; @Given("^I have open the browser$") pubpc void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$") pubpc void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$") pubpc void loginButton() { if(driver.findElement(By.id("u_0_v")).isEnabled()) { System.out.println("Test 1 Pass"); } else { System.out.println("Test 1 Fail"); } } @Then("^Forgot password pnk should exist$") pubpc void forgotPWD() { if(driver.findElement(By.id("")).isEnabled()) { System.out.println("Test 1 Pass"); } else { System.out.println("Test 1 Fail"); } } }
创立一个名为的班轮。 在包裹内。
撰写以下法典。 Save the file.
package CucumberReport; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options( format = {"pretty", "html:target/Destination"} ) //Specifying pretty as a format option ensure that HTML report will be generated. //When we specify html:target/Destination - It will generate the HTML report inside the Destination folder, in the target folder of the maven project. pubpc class runTest { }
利用备选办法进行试验
Right-cpck and selected the Options, Run as 。
选择JUSG测试。
在你管理本级档案时,你将观察下列情况:.
这两种情况都将逐一执行。
将在目标目录内设立一个名为“目的地”的夹。
报告将称为“Index.html”。
开放指数.html,有网页浏览器。
你将看到以下形象中提到的报告:
它确切地突出了失败的情景。 此外,你将强调这一设想中的失败步骤。 这使得偷窃非常容易。
JSON Report
到现在为止,我们看到超文本报告是多么容易。 然而,如果我们想将这一信息传递给任何其他申请,那么在超文本报告的情况下,这种微薄的.。 这里需要另一种报告格式。 JSON-Java书写标语是产生Cucumber测试报告的另一个格式。 JSON是一个含有大量以文字形式储存的信息的物体。 JSON报告给表格带来了不同价值。 JSON报告也可用作在不同服务器之间传输信息的有效载荷。 此外,也可将其展示为网页。 简言之,JSON报告可以用于其他应用。
将操作员档案的格式选择修改如下。
package CucumberReport; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options( format={"json:target/Destination/cucumber.json"}) //When we specify json:target/Destination/cucumber.json - It will generate the JSON report inside the Destination folder, in the target folder of the maven project. pubpc class runTest {}
利用备选办法进行试验——
右点击和选择Run as。
选择JUSG测试。
在你管理本级档案时,你将观察下列情况:.
这两种情况都将逐一执行。
报告将称为cucumber.json。 (按班轮班提供)。
开放网站cucumber.json 文本编辑存档。
您将看到以下屏幕上提到的报告:
Cucumber - Debugging
由于不明原因,你的测试很可能失败。 查明失败的原因和纠正这一原因非常重要。 这一过程称为debugging。 下面是几条ps和小trick,使 Cu木的bu积变得容易。
偷渡方案可采用Ecppse。 1. 打破点的位置。 利用以下步骤点击档案和弹 the:
Example
require ruby-debug Then /^the process should exit cleanly$/ do breakpoint assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}" end
Then /^I debug$/ do breakpoint 0 end
有时,你会试图点击一些东西,例如,在那里。 你们的空子被扔下了一只高超的双龙头,并混淆了这究竟意味着什么是真正的rag。
save_and_open_page
Webrat提供了一种可节约和开放的网页,该网页可浏览目前的超文本,可以节省下来,然后在浏览器上打开。 极为有益。
When /^I follow "(.*)"$/ do |pnk| save_and_open_page cpck_pnk(pnk) end
Cucumber - Java Testing
与 Java一道进行Cucumber测试,其步骤如下。
页: 1
接受许可协议。
Install JDK and JRE.
如下图所示,设定环境变量。
在你的机器上安装了JAVA。
https://ecppse.org/downloads/“ Target=”_blank”rel=“nofollow”https://ecppse.org/downloads/
Unzip和Ecppse装置。
页: 1
编造档案并记住地点。
创建环境变量MAVEN_HOME,如下图所示。
Edit Patherra and include Maven.
缩略语
开放 Ecppse。
Got to help —— Ecppse Marketplace ——search maven —— Maven Integration for Ecppse ——INSTALL
创建Maven项目。
Go to file ——New —— Others —— Maven —— Maven Project —— Next。
供应集团 Id(Id组将确定你在所有项目中独一无二的项目)。
提供艺术作品 Id. 行为 斜体是 without的名称,没有版本。 你们可以选择下调的任何名字。
Cpck on Finish.
进入Ecppse左侧的一揽子探索者。
扩大Cucumber 试验项目。
Locate pom.xml file.
Right-cpck and selected the programme, Open with “Text Editor”.
开放式的om子是ed的,在项目标的内形成依赖物(配对;依赖物和gt;及/依赖物和gt)。
在附属企业中,产生依赖方。 (加附;独立与特;合并;/独立与特;)
在依赖方提供以下信息。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
Step 7 − Add Depend for Cucumber-Java - 这将表明Maven,Cucumber文档将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方内部提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
Step 8 − Add Depend for Cucumber-JUnit - 这将表明Maven,Cucumber Junnit的档案将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
Step 9− 日尼特附属公司 这将表明Maven, 而Junnit案卷将从中央存放处下载到当地存放处。
创建另一个依赖方。
在依赖方提供以下信息。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
Step 10 − 更正。
页: 1
Go to Project - Clean - 发言几分钟。
你将能够看到Maven存放处。
Step 11——在src/test/java下建立一个称为cucumberJava的包裹。
在一揽子大纲中选择和右翼。
Cpck on "New' file.
如cucumberJava.feature。
在档案中撰写以下案文,并予以保存。
Feature: CucumberJava
设想: Login functionapty exists
鉴于我已经打开了浏览器。
开放Facebook网站
然后,洛因纽州应当撤出
在一揽子大纲中选择和右翼。
Cpck on "New' file.
查阅档案名称如下:annotation.java。
在档案中撰写以下案文,并予以保存。
package CucumberJava; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; pubpc class cucumberJava { WebDriver driver = null; @Given("^I have open the browser$") pubpc void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$") pubpc void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$") pubpc void loginButton() { if(driver.findElement(By.id("u_0_v")).isEnabled()) { System.out.println("Test 1 Pass"); } else { System.out.println("Test 1 Fail"); } driver.close(); } }
Step 14 − • 创建经营人班级档案。
在一揽子大纲中选择和右翼。
Cpck on "New' file.
将档案名称改为 .java。
在档案中撰写以下案文,并予以保存。
package cucumberJava; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) pubpc class runTest { }
Step 15 − 利用备选办法进行试验——
一揽子勘探者的选择性操作文件。
Right-cpck and selected the Options, Run as 。
选择JUSG测试。
在执行时,你将观察下列情况:
“网络浏览器”的例子将开放。
该网站将在浏览器上开放Facebook登录。
它将探测 log子。
浏览器将关闭。
在JUSG窗口,你将看到一个绿色标志的情景,这表明试验执行的成功。
Cucumber - Ruby Testing
鲁语具有以下优势:
容易理解。
这是一个面向目标的语言。
这是一个强大的阶级图书馆。
它拥有大量的在线支持。
接下来是Cucumber如何与Ruby公司合作。
Go to DuncanInstaller 下载页面。
下载最适合您的操作系统版本(即32或64轨)。
下载
在安装期间,如以下图像所示,将选择“Add.1.”和“联系......”。
Go to DuncanInstaller 下载页面。
下载“Devkit”版本最适合你的操作系统(即32或64 bit)。
摘录:RubyDevkit 夹。
立即开放指挥。
在Ruby devkit,指挥员如下。
C:Rubydevkit> ruby dk.rb init C:Rubydevkit> ruby dk.rb install
安装Cucumber,首先更新目前的组装
C:UsersAdmin> gem update –system
其次,安装了你需要Cucumber网络测试的宝石。
C:UsersAdmin> gem install --no-ri --no-rdoc rspec C:UsersAdmin> gem install --no-ri --no-rdoc win32console C:UsersAdmin> gem install --no-ri --no-rdoc watir-webdriver C:UsersAdmin> gem install --no-ri --no-rdoc cucumber
龙木
C:UsersAdminDocuments>cucumber –init C:UsersAdminDocuments>cucumber
http://www.activestate.com/komodo-ide/downloads>。
免费安装机。
下载的碎片。
跟踪安装步骤。
完成电离层系统的安装和开放。
Step 7——创建特征文件。
开放式KOMODO编辑。
Cpck on new file icon.
撰写以下案文。
Feature: 用户必须能够利用谷歌搜索内容。
设想: Search for a term.
鉴于我已进入“watir”查询。
当我点击search”
然后,我就看到一些结果。
Cpck save icon.
Give the name as CucumberRuby.feature.
例如:。
Save the file.
开放式KOMODO编辑。
Cpck `New' file icon.
撰写以下法典。
require "watir-webdriver" require "rspec/expectations" Given /^I have entered "([^"]*)" into the query$/ do |term| @browser ||= Watir::Browser.new :firefox @browser.goto "google.com" @browser.text_field(:name => "q").set term end When /^I cpck "([^"]*)"$/ do |button_name| @browser.button.cpck end Then /^I should see some results$/ do @browser.span(:id => "resultStats").wait_until_present @browser.span(:id => "resultStats").should exist @browser.close End
Cpck Save icon.
将姓名改为CucumberRuby.rb
例如,见。
Save the file.
开放式KOMODO编辑。
Cpck on "New' file icon.
撰写以下法典。
require "rubygems" require "test/unit" require "watir-webdriver" class GoogleSearch < Test::Unit::TestCase def setup @browser ||= Watir::Browser.new :firefox end def teardown @browser.close end def test_search @browser.goto "google.com" @browser.text_field(:name => "q").set "watir" @browser.button.cpck @browser.span(:id => "resultStats").wait_until_present assert @browser.title == "watir - Google Search" end end
Cpck Save icon.
姓名:test.rb> 例如:“e:With Ruby”
Save the file.
迅速指挥。
加入:
指挥以下人员。
e:With Ruby>ruby test.rb
在执行时,你将观察下列情况:
网站浏览器将开放。
谷歌网页将装上。
将进入搜索文本watir。
将设置搜索纽州。
搜索结果应在网页上展示。
浏览器将关闭。