首页 > 其他分享 >记Cucumber行为驱动测试的简单配置与使用方式

记Cucumber行为驱动测试的简单配置与使用方式

时间:2023-02-24 08:11:30浏览次数:37  
标签:String Cucumber URL cucumber 测试 test 驱动 public

产生背景

代码测试的工具有很多,比如最常用的单元测试工具Junit、Jupiter、Mockito和PowerMockito,这几个可以说是Java开发者的心头好,代码测试一般都是用这几个里面的某一个或者一组(Mockito和PowerMockito)结合进行使用,现在代码测试的问题可以很好的得到解决,但是新的问题又产生了,这里的问题不是指代码是否有缺陷的问题,而是说随着用户群体的扩大,可能有些并不怎么接触代码的人(比如产品和甲方)想亲眼看到孵化的产品安全性是否可靠、健壮性是否够足够,这个时候就要求开发人员能写一些他们看得懂的测试用例并给出对应的测试报告;在这种情况下,cucumber应运而生了。

cucumber简介

cucumber是BDD(Behavior-driven development,行为驱动开发)的一个自动化测试框架产品,cucumber使用自然语言来描述测试,通过设置中文描述可以连通业务人员和开发人员,使得需求清晰明了,进而消除两种角色之间理解上的差异——功能上和需求上。

牛刀小试

此处使用springboot项目进行简单的cucumber编写与测试,各种相关cucumber的知识会在下面的步骤中一一具体说明;

pom配置

 <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java8</artifactId>
            <version>4.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>4.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-spring</artifactId>
            <version>4.2.0</version>
            <scope>test</scope>
        </dependency>

待测试Controller接口

@RestController
@RequestMapping("api")
public class WebSocketController {
    @Autowired
    private WebSocketService webSocketService;

    @GetMapping("name")
    public String getName() {
        return webSocketService.getName();//返回 查询成功 字段
  }
}

编写feature

根据业务需求,在src/test/resources目录下新建features文件夹管理.feature文件,在src/test/java目录下撰写每一个step对应的步骤定义java文件。

需要注意的是,cucumber可以支持多种语言,包括中文。本文仅介绍中文实现方式,中文实现方式在feature文件中加入:

# language:zh-CN

 

编写feature对应BDD文件

public class GetNameBDD {
    private String BASE_URL = "http://localhost:8081";
    private String URL = null;
    private String result = null;

    @假定("将要调用获取name接口")
    public void getNamePrepare() {
        URL = BASE_URL + "/api/name";
    }

    @当("获取了name")
    public void hadGetName() {
        TestRestTemplate testRestTemplate = new TestRestTemplate();
        result = testRestTemplate.getForObject(URL, String.class);
    }

    @并且("name是{string}")
    public void judge(String nameStr) {
        assert nameStr.equals(result);
    }

    @那么("执行成功")
    public void success() {
        System.out.println("测试结果正常");
    }

}

编写测试类

@RunWith(Cucumber.class)//以cucumber的方式运行测试文件
@CucumberOptions(
        monochrome = true,//详细显示运行结果
        plugin = {"pretty",
                "json:target/cucumber-report/json-files/cucumber.json",
                "html:target/cucumber-report/cucumber.html"},//生成本地json和html测试报告
        features = "src/test/resources/features")//feature文件存放位置
public class CucumberTest { }

 

运行测试

上面的做完以后运行测试就很简单了,首先把项目正常启动起来(测试的本质是接口的调用),之后运行CucumberTest文件,就能得到如下测试结果;

其中需要注意的是,Scenarios就是我们说的场景,Step就是我们在场景下编写的那些行文字,每个step都有BDD方法与之唯一对应;

测试报告

测试报告生成在targer/cucumber-report下

标签:String,Cucumber,URL,cucumber,测试,test,驱动,public
From: https://www.cnblogs.com/hx-web/p/17149374.html

相关文章

  • unity 单元测试
    unity单元测试Created:February23,202311:11PMTags:C语言,stm32,单元测试概述为了方便在stm32上进行单元测试,需要在项目中导入unity框架以便于对项目的单元测......
  • Vulnhub之GlasgowSmile靶机测试过程(部分)
    GlasgowSmile识别目标主机IP地址(kali㉿kali)-[~/Desktop/Vulnhub/GlasgowSmile]└─$sudonetdiscover-ieth1-r10.1.1.0/24Currentlyscanning:10.1.1.0/24|......
  • esxi8.0测试密钥
    esxi8.0测试密钥VMwarevSphereESXi8.0ESXi8:4V492-44210-48830-931GK-2PRJ4VCSA8:0Z20K-07JEH-08030-908EP-1CUK4ESXi8:4F40H-4ML1K-M89U0-0C2N4-1AKL4VCSA8:0F41K-0MJ......
  • 测试
      [root@iZbp15hgmnt51ifjsheh9gZ~]#whereispippip:/usr/bin/pip3.6[root@iZbp15hgmnt51ifjsheh9gZ~]#pip3.6installgrpcio-tools==1.48.2WARNING:Runni......
  • fields设计与测试
     菲尔兹管理用例一、向开发找到需求ID需求设计文档ID二、在fields的需求列表中,填入ID,创建计划1、状态:测试接手2、日期:冒烟日期,测试日期3、可能遇到的问题:*......
  • 权威的软件测试外包公司有哪些?简析软件测试外包的好处
    随着人们对软件产品的需求越来越多,市场上的软件系统层出不穷,软件企业在产品质量问题上十分重视。因此专业的软件测试外包公司就成为了很多个人或企业或事业单位的首选,那......
  • linux安装8125B网卡驱动
    机器的系统是CentOS7,网卡是Realtek的2.5G网卡RTL8125B。1.下载驱动Realtek瑞昱官网:https://www.realtek.com/zh/下载链接:https://www.realtek.com/zh/component/zoo/c......
  • 移动全平台性能测试神器PerfDog
    一、APP性能测试背景在任何软件的测试过程中,性能测试都是一个很重要的环节。我们一般所说的性能测试分为客户端及服务器端。针对客户端性能测试,尤其像游戏、视频类的软......
  • 测试公开课资料系列01--Fiddler之AutoResponse在线调试利器
     前言做的技艺来自做的过程。明天晚上,笔者在腾讯课堂开播一堂Fiddler实战公开课,嗯~先预先筹备一些课堂资料给大家来分享一、Fiddler在线调试介绍Fiddler在线调试-->Fid......
  • 月薪过 3w 的 软件测试 员都是怎么做到的?
    对任何职业而言,薪资始终都会是众多追求的重要部分。前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口......