java bdd 框架_BDD框架之Cucumber研究

本文详细介绍了Cucumber Java BDD框架的使用,包括Features、Steps定义、Given When Then语句、Cucumber执行及特性,如Tags、Hooks、自定义格式器和Profiles。此外,还提到了如何在Java环境中集成Cucumber,并提供了简单的步骤定义和用例示例。
摘要由CSDN通过智能技术生成

cript来编写步骤层

3、Features介绍

feature(功能),每一个feature文件都要

开始于Feature(功能),Feature之后的描述可以随便写,知道出现Scenario(场景),一个feature中可以有多个

Scenario,每个Scenario包含(step)步骤列表,步骤使用Given、When、Then、But、And这些关键

词,cucumber对这些关键词的处理是一样的,但是我们在使用的时候需要按照场景区分。

4、Step denfinitions介绍

Cucumber中定义的每一个step(步骤)都需要有一个step

definition对应,默认的话是使用Ruby来编写定义的脚本(现在有cucumber-js等也支持javascript、java等来编写),支持通过正则表达式从step中传递参数。Step

definition的详细说明可以参考

5、Given When then(假如 当 那么)

Cucumber的步骤中会包含Given、When、then这些词组,cucumber本身在技术实现上不区分这三个词组,但是在使用上推荐按照词组的意思来使用。

Given-用例开始执行前的一个前置条件,类似与编写代码setup中的一些步骤

When-用例开始执行的一些关键操作步骤,类似点击元素等

Then-观察结果,就是平时用例中的验证步骤

And-一个步骤中如果存在多个Given操作,后面的Given可以用And替代

But-一个步骤中如果存在多个Then操作,第二个开始后面的Then可以用But替代

6、 Cucumber使用

6、cucumber使用

查看cucumber支持的语言 cucumber --i18n help

查看支持语言的关键字 cucumber –i18n zh-CN

创建Demo

1、

新建一个demo文件件

2、

demo文件夹下新建features文件夹

3、

features文件夹下新建”中文.feature”文件,后缀必须是.fearure结尾

中文的话最前面必须增加# language: zh-CN

# language: zh-CN

功能:第一个中文程序

中文实现

场景:中文实现场景

假如当前是中文

当输入是测试

那么能看到中文测试

4、 新建step_denfinitions文件夹

5、step_denfinitions中新建step_steps.rb文件编写步骤定义(这里默认使用Ruby编写)

Given /^当前是(.*)/ do |action|

@action= action

end

When /^输入是(.*)/ do |subject| @subject = subject

end

Then /^能看到(.*)/ do |greeting|

if greeting != "#{@action}#{@subject}"     raise "期望看到,实际看到"

end

end

6、 执行编写的脚本,在features文件夹的同一目录下运行cucumber命令,则会自动查找features额文件夹下的所有.features结尾的文件进行执行

7、如果按照tag执行,可以使用cucumber –tags @P0  则只执行P0优先级的用例

7、Cucumber-tags功能

@billing

Feature: Verify billing

@important

Scenario: Missing product description

Scenario: Several products

对Feature或者Scenario都可以增加tag来进行标注,运行时可以选择只运行哪些tag

cucumber –tags @billing

8、Cucumber-Hooks功能

Cucumber提供了一些钩子,可以在cucumber的生命周期中调用,可以在support目录下新建文件自定义钩子中的一些处理。

比如下面的代码会在每一个场景的第一个step执行之前调用

Before do |scenario|

# The +scenario+ argument is optional, but if you use it, you can get the title,

# description, or name (title + description) of the scenario that is about to be

# executed.

Rails.logger.debug "Starting scenario: #{scenario.title}"

end

9、Cucumber-Custom Formatters功能

在执行时增加format参数可以输出详细的结果,另外也可以编写自己的format

cucumber --format debug

当前也存在一些一直的format插件,可以把cucumber的运行结果转为html等格式,具体可以见介绍页的最后。

Cucumber –f html –out “test.html”会自动生成html的结果文件

10、Cucumber-Profiles功能

可以在当前的工作目录下新建config目录,下面新建cucmber.yml文件,可以在文件中定义一些组合的命令用于cucumber调用

# config/cucumber.yml

##YAML Template

---

html_report: --format progress --format html --out=features_report.html   bvt: --tags @bvt

定义完成后可以在cucumber中通过下面命令调用

cucumber –p bvt

cucumber –profile html_report

11、Running Features

运行编写好的Feartures,详细见:

cucumber -–help 查看命令的帮助

cucumber 默认运行features目录下面的所有feature

cucumber -–require features features/first.feature 只运行指定feature文件中的用例

cucumber features –name “hello” 运行指定Scenario名称的用例

cucumber features/first.feature:11 运行文件中指定行数对于的Scenario用例

12、持续集成结合

cucumber支持运行时生成junit格式的xml结果文件,用于在Jenkins中自动来解析xml文件生成结果内容

cucumber –f junit –out “junit”

通过上面的命令可以执行所有的feature,每一个feature文件都会生成一个xml的结果文件,可以用于在和持续集成整合。

13、Cucumber-jvm

cucumber默认是使用Ruby来编写step_denfinitions中的步骤,但是一些测试工具是使用java或者javascript来编写的,比如selenium使用java,不要害怕,cucumber提供了很多不同语言的扩展,也支持java、javascript等。

Cucumber-jvm详细信息见:

https://github.com/cucumber/cucumber-jvm

使用流程:

1、 下载cucumber-jvm相关jar包

下载地址:https://oss.sonatype.org/content/repositories/releases/

cucumber-core.jar 核心包

cucumber-java.jar通过java编写需要下载这个包

cucumber-html.jar生成结果为html文件需要下载这个包

cucumber-junit.jar生成结果为junit格式需要这个包

junit.jar java代码中使用junit

jchronic.jar

2、eclipse中新建一个一般的java工程,引入下载的jar包

3、新建基于java的step_denfinitions文件,这里只需新建一般的java文件即可

下面是一个demo的例子

package com.netease.cucumber.java;

import junit.framework.Assert;

import cucumber.api.java.zh_cn.*;;

public class ChineseDemo {

private String action;

private String subject;

@假如("^当前是(.*)")

public void isChinese(String

action){

this.action = action;

}

@当("^输入是(.*)")

public void input(String

subject){

this.subject = subject;

}

@那么("^能看到(.*)")

public void outPut(String

gretting){

Assert.assertEquals(action + subject, gretting);

}

}

编写完成上面的java文件后,就需要编写你的features文件了

# language: zh-CN

功能:第一个中文程序

中文实现

@P0

场景:中文实现场景

假如当前是中文

当输入是测试

那么能看到中文测试

运行用例

这里使用了官方提供的一个build文件来运行,支持通过命令行的方式,具体支持哪些参数官方也没有详细的文档,暂时只了解到下面一些

详细的build文件可以参考:

这里简单介绍一下具体运行的几个参数

depends="compile-test">

resultproperty="cucumber.exitstatus">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值