BDD⾃动化测试框架cucumber(1):最基本的demo
BDD(Behavior Driven Development),⾏为驱动开发, 对应⾃动化测试框架,python有behave,java有cucumber, 这次记录cucumber+springboot+maven的⾃动化测试框架。基本结构如下:
1)l
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- mvnrepository/artifact/org.springframework.boot/spring-boot-starter-parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
<groupId&le</groupId>
<artifactId>cucumberExample</artifactId>
<version>1.0-SNAPSHOT</version>
<!--can set the same version for the same module-->
<properties>
<cucumber.version>2.3.1</cucumber.version>
<cucumber-reporting.version>3.14.0</cucumber-reporting.version>
<mavenpiler.version>3.7.0</mavenpiler.version>
<javapiler.version>1.8</javapiler.version>
</properties>
<dependencies>
<!-- mvnrepository/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
spring framework是什么框架的
<!-- mvnrepository/artifact/io.cucumber/cucumber-java8 -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>${cucumber.version}</version>
</dependency>
<!-- mvnrepository/artifact/io.cucumber/cucumber-spring -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>${cucumber.version}</version>
</dependency>
<!-- mvnrepository/artifact/io.cucumber/cucumber-junit -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
</dependency>
<!-- mvnrepository/artifact/net.masterthought/cucumber-reporting -->
<dependency>
<groupId>net.masterthought</groupId>
<artifactId>cucumber-reporting</artifactId>
<version>${cucumber-reporting.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- mvnrepository/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${mavenpiler.version}</version>
<configuration>
<source>${javapiler.version}</source>
<target>${javapiler.version}</target>
</configuration>
</plugin>
<plugin>
<!-- mvnrepository/artifact/org.apache.maven.plugins/maven-surefire-plugin -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<inherited>true</inherited>
<dependencies>
<!-- mvnrepository/artifact/org.apache.maven.surefire/surefire-junit4 -->
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit4</artifactId>
<version>3.0.0-M5</version>
</dependency>
</dependencies>
<configuration>
<argLine>-Xmx1024m</argLine>
<argLine>-Xms1024m</argLine>
<forkCount>3.0c</forkCount>
<reuseForks>true</reuseForks>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>**/demoRunner.class</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</project>
2)features: 最重要的环节,⽤户场景
@login
Feature: login function
Scenario Outline: password checking
Given I have open the login page
And input account=<account>
And input password=<password>
When I click the LOGIN button
Then it return login success to me
Examples:
|account|password|
|user1  |password1|
|user2  |password2|
3)steps: 实现feature ⾥⾯每⼀个步骤的逻辑,⼀句话对应⼀个step⼀个⽅法
备注:这⾥我还没有加上⽅法体,以后再加
package steps;
/
*
* @author Helen Lee
* @create 2020/9/11
* @description
*/
import cucumber.Given;
import cucumber.Then;
import cucumber.When;
import org.junit.Assert;
public class login_steps {
@Given("I have open the login page")
public void iHaveOpenTheLoginPage() {
}
@Given("input account=(.*)")
public void inputAccountAccount(String account) {
}
@Given("input password=(.*)")
public void inputPasswordPassword(String password) {
}
@When("I click the LOGIN button")
public void iClickTheLOGINButton() {
}
@Then("it return login success to me")
public void itReturnLoginSuccessToMe() {
}
}
4)runner: 执⾏testcases
/*
* @author Helen Lee
* @create 2020/9/11
* @description
*/
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
import org.st.context.SpringBootTest;
@RunWith(Cucumber.class)
@SpringBootTest
@CucumberOptions(
tags = {"@login"},
features = {"src/main/resources/features"},
glue = {"steps"},
plugin = {
"pretty",
"html:target/cucumber",
"json:target/cucumberReportJsonFiles/cucumber-report.json"
}
)
public class demoRunner {
public void test() {
}
}
完成这四个之后,就可以run demoRunner了,结果如下:跑了user1/password1 和user2/passwords两个test cases

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。