cucumber框架使用解析

一.简介

Cucumber 是一个能够理解用普通语言描述的测试用例的行为驱动开发(BDD)的自动化测试工具,,用Ruby**编写,支持Java和·Net等多种开发语言。

二.Cucumber三大组成

1、由Features、Step_definitions、Cucumber command组成

2.Features

  • 基于Gherkin。支持语言:# language: en (zh-CN)等
  • Features文件必须以.features命名。
  • 包含title,多个scenarios,每个scenario包含多个step。

3.Step_definitions

  • Step定义必须以关键字Given,When,Then,And开始,根据正则匹配对应的关键字
  • 根据feature文件中定义的step编写对应的测试代码。

4.Cucumber command

  • 运行*.feature文件。cucumber会分析feature文件中定义的step,然后去step -definitions寻找相匹配的step,执行step中的代码
  • 运行结果以html的形式保存,fail的情况查看对应log日志

三.cucumber开发过程

1.首先使用cucumber原型Maven插件创建一个新的项目目录

mvn archetype:generate -DarchetypeGroupId=io.cucumber -DarchetypeArtifactId=cucumber-archetype -DarchetypeVersion=6.10.4 -DgroupId=hellocucumber -DartifactId=hellocucumber -Dpackage=hellocucumber -Dversion=1.0.0-SNAPSHOT -DinteractiveMode=false

2、创建feature文件,包括feature,scenarios和step

Feature: Is it Friday yet?
  Everybody wants to know when it's Friday
  Scenario: Sunday isn't Friday
    Given today is Sunday
    When I ask whether it's Friday yet
    Then I should be told "Nope"

3.创建step_definitions

package hellocucumber;

import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import static org.junit.Assert.*;

class IsItFriday {
    static String isItFriday(String today) {
        return "Nope";
    }
}
public class StepDefinition {
    private String today;
    private String actualAnswer;
    @Given("^today is Sunday$")
    public void today_is_Sunday() {
        today = "Sunday";
    }
    @When("^I ask whether it's Friday yet$")
    public void i_ask_whether_is_s_Friday_yet() {
        actualAnswer = IsItFriday.isItFriday(today);
    }
    @Then("^I should be told \"([^\"]*)\"$")
    public void i_should_be_told(String expectedAnswer) {
        assertEquals(expectedAnswer, actualAnswer);
    }
}

3.Gherkin方法

  • Feature (功能)-------------test suite (测试用例集)
  • Scenario(情景)-----------test case (测试用例)
  • Scenario Outline (or Scenario Template):如下,和examples更配哦,多用于逻辑相同时,多组参数传参
Scenario Outline: eating
  Given there are <start> cucumbers
  When I eat <eat> cucumbers
  Then I should have <left> cucumbers
  Examples:
    | start | eat | left |
    |    12 |   5 |    7 |
    |    20 |   5 |   15 |
  • Given(给定)-------------setup(创建测试所需环境)
  • When(当)----------------test(触发被测事件)
  • Then(则)-----------------assert(断言,验证结果)
  • Background(背景):您会发现自己在一个功能的所有场景中重复相同的给定步骤,因为它在每个场景中都是重复的,这表明这些步骤对于描述场景不是必需的;它们是附带的细节。您可以通过将这些给定的步骤分组到background部分,将它们移动到后台。
  • And(or But):如果你有连续的“给定”、“何时”或“然后”
  • “”"(定义多行字符串):方便地将较大的文本段传递给步骤定义
  • |(用来定义表格):数据表便于将值列表传递给步骤定义
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值