9.3 Cucumber
第一章:
1.1 Cucumber是什么?
Cucumber 是 BDD 模式下实现可执行规范的开源工具,但是它的使命并不局限于做自动化验收测试,更加重要的在于其能够在团队成员之间构建统一的交流基础(feature 文件)、规范交流用语、提高各个利益相关方沟通效率和效果,从而达到提升产品质量、做成客户期望得到的产品这一最终目标。
1.2 如何使用Cucumber
Cucumber 有很多种语言的实现版本,例如 Java、Ruby、.NET、JavaScript 等等,并且 Cucumber 可以和主流的测试框架很好地集成,常见的 Selenium、SpringFramework、Ruby on Rails 等,能够方便地引入到您的测试工作中去,几乎没有任何门槛。本文以一个 Java 测试项目为例,介绍如何使用 Cucumber 的 Java 语言实现版本:Cucumber-JVM。
1.3如何在IEDA中使用cucumber
新建一个测试工程
出现下图 选择Maven->next
给Maven这个文件取个名字 下面的是ID(标识符)
然后next-->next--finish
pom.xml 中需要引入这些jar
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<scope>test</scope>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
1.4 第一个实例
创建一个测试文件后缀为feature 内容为:
Feature: AddMuilty
Scenario: test
Given run
新建一个测试类TestAdd
package yide.bb; /**
* Created by Administrator on 2017/4/19.
*/
import cucumber.api.java.en.Then;
import static groovy.util.GroovyTestCase.assertEquals;
public class TestAdd {
@Then("run")
public void test(){
System.out.print("987654");
assertEquals(1,1);
}
}
回到feature文件中右键选择create选项
会显示一个弹出框:
其他默认 Glue是值你要测试文件的所在的包
点击运行 如下
feature文件的关键字:
| feature | "功能" |
| background | "背景" |
| scenario | "场景", "剧本" |
| scenario_outline | "场景大纲", "剧本大纲" |
| examples | "例子" |
| given | "* ", "假如", "假设", "假定" |
| when | "* ", "当" |
| then | "* ", "那么" |
| and | "* ", "而且", "并且", "同时" |
| but | "* ", "但是" |
| given (code) | "假如", "假设", "假定" |
| when (code) | "当" |
| then (code) | "那么" |
| and (code) | "而且", "并且", "同时" |
| but (code) | "但是" |
注解
@Given("与feature文件的值一样")
@When("与feature文件的值一样")
@then("与feature文件的值一样")
@And("与feature文件的值一样")
@but("与feature文件的值一样")
注意:
Scenario Outline: test multy
是测试多次列:
Feature: AddMuilty
Scenario Outline: test multy
Given 第一个参数 "<input1>" 第二个参数 "<input2>"
When 运行99
Then 结果"<result>"
Examples:
| input1 | input2 | result |
| 2 | 3 | 5 |
| 2 | 4 | 6 |
| 3 | 3 | 6 |
测试单次
Scenario:test