前面提到,testng中使用@DataProvider读取csv中的数据文件,并且通过注解来引入csv文件,使得测试数据和测试逻辑组织相当简洁。
还有一种测试数据组织的方式,就是使用cucumber的feature文件来组织测试数据
Cucumber使用近似自然的语言去描述测试场景和测试用例。
在feature文件中定义测试场景,数据和步骤。
举一个例子
Feature: cucumber demo test
Scenario Outline: login
Given 登陆页面
When 登陆页面中输入账户<account>密码<pwd>点击登陆按钮
Then 验证登陆状态<state>和登陆信息<msg>
Examples:
|account | pwd |state|msg |
|liang |123456 |0 |success|
|liang |abc |1 |failure|
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>6.9.1</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>6.9.1</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>6.9.1</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>6.9.1</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>6.9.1</version>
</dependency>
基于上面的feature文件,定义每一步骤的处理函数
package train.testng;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
public class Liang6LoginStep {
@Given("^登陆页面$")
public void loginPage(){
System.out.println("open the login page");
}
@When("^登陆页面中输入账户(.*)密码(.*)点击登陆按钮$")
public void clickLoginBtn(String account, String pwd){
System.out.println("login account is : "+ account + " | pwd is : " + pwd);
}
@Then("^验证登陆状态(.*)和登陆信息(.*)$")
public void verify(String state, String msg){
System.out.println("login state is : " + state + " | msg is : " + msg);
}
}
package train.testng;
import io.cucumber.junit.Cucumber;
import io.cucumber.spring.CucumberContextConfiguration;
import io.cucumber.testng.*;
import org.junit.runner.RunWith;
import org.testng.annotations.*;
@RunWith(Cucumber.class)
@CucumberOptions(
features = {"src/main/java/train/testng/liang6cucumber.feature"},
glue = {"train/testng"},
plugin = {"pretty", "html:target/cucumber", "json:target/json/LoginTest.json","junit:target/junit"},
monochrome = true)
@CucumberContextConfiguration
public class Liang6DemoCucumberRunner extends AbstractTestNGCucumberTests {
@BeforeClass
public void beforeTest(){
System.out.println("start to do cucumber test");
}
@AfterClass
public static void afterTest(){
System.out.println("finish doing cucumber test");
}
}
原创:testng 参数化(5)- 使用cucumber来读取feature文件
原文:https://www.cnblogs.com/liang6/p/14437868.html