英文视频教程地址是百度网盘,后续会放到微信公众号:【软测小生】里面,请关注公号更新相关文章和视频资源。

****************************分割线*****************************

此文只是搬运工,最准确的请查看原文,文章来源:https://www.toolsqa.com/cucumber/first-cucumber-selenium-java-test/

到目前为止,在Cucumber系列教程中,我们已经介绍了Feature files, Gherkins, Step Definitions, Annotations, Test Runner Class和许多其他内容。毫无疑问,在您了解所有概念之前,您无法设置BDD框架,但是在Cucumber自动化的生活中,仍然有一些领域是非常重要的,比如Cucumber Options, Regular Expressions, Page Object factory等等。让我们从Cucumber Options开始吧。

什么是Cucumber Options?

在一个外行看来@CucumberOptions类似于测试中的属性文件或设置。实际上 @CucumberOptions让可以完成我们使用cucumber命令行时可以做的所有事情。如果我们只使用IDE这样的Eclipse来执行我们的项目,那么这是非常有用的,也是非常重要的。您一定注意到,我们在前一章的“TestRunner”类中设置了一些选项。

TestRunner Class

package cucumberTest;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;@RunWith(Cucumber.class)
@CucumberOptions(features = "Feature",glue={"stepDefinition"})public class TestRunner {
}

在上面的例子中,我们设置了两个不同的Cucumber Options。一个用于Feature File,另一个用于Step Definition文件。现在我们将详细讨论它,并且有了这个,我们可以说@CucumberOptions用于为Cucumber测试设置一些特定的属性。

Cucumber提供了以下主要选项:

Options Type

(选项类型)

Purpose(用途)

Default Value(默认值)

dryRun

true:检查所有步骤是否都有步骤(Step Definition)定义

false

features(剧本)

set:feature文件的路径

{}

glue

set:步骤定义(Step Definition)文件的路径

{}

tags

instruct(指示): 指定应该执行features文件中的哪些标签

{}

monochrome

True:以可读的方式显示控制台输出

false

format

set:What all report formaters to use

false

strict

true:如果存在未定义或挂起的步骤,则执行将失败。

false

Dry Run

dryRun选项可以设置为truefalse

如果设置为true,这意味着Cucumber将只检查 Feature文件中提到的每个Step是否在Step Definition文件中编写了相应的代码。。 因此,如果在Feature文件中的任何一个步骤的Step Definition中遗漏了某个函数,它将向我们提供消息。 对于练习,只需在TestRunner类中添加代码'dryRun = true':

TestRunner Class

package cucumberTest;import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;@RunWith(Cucumber.class)
@CucumberOptions(features = "Feature",glue={"stepDefinition"},dryRun = true)public class TestRunner {}

现在右键单击TestRunner类运行它,然后单击Run As > JUnit Test。Cucumber将运行脚本,结果将显示在JUnit选项卡的左侧project explorer窗口中。

【如果要使用TestNG 则要 extends AbstractTestNGCucumberTests, 然后单击Run As > TestNG Test】

看看每个步骤结束时的持续时间,它是(0.000s)。这意味着没有执行任何一个步骤,但是Cucumber仍然确保每个步骤在步骤定义文件中都有相应的方法可用。尝试一下,从Test_Steps类中删除' @Given(" ^User is on Home Page$ ") '语句,然后再次运行TestRunner类。您将得到以下信息:

Monochrome

此选项可以设置为true或false。

如果将其设置为true,则意味着Cucumber测试的控制台输出更具可读性。如果将其设置为false,那么控制台输出就没有应有的可读性。为了练习,只需在TestRunner类中添加代码“monochrome = true”:

TestRunner类:

TestRunner Class

package cucumberTest;import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;@RunWith(Cucumber.class)
@CucumberOptions(features = "Feature",glue={"stepDefinition"},monochrome = false)public class TestRunner {}

现在右键单击TestRunner类运行它,然后单击Run As > JUnit Test。Cucumber将运行脚本,控制台输出将如下所示:

这一次将值从true更改为false,即“monochrome = false”:,并再次运行TestRunner类。这一次控制台输出将如下所示:

出现 [32m  0m   90m等等的看不懂的特殊字符。

  @Login @tag1Scenario: Successful Login with Valid Credentials [90m# src/test/resources/features/LogIn_Test.feature:5[0m
^User is on Home Page$[32mGiven [0m[32mUser is on Home Page[0m                      [90m# StepDefinitions.User_is_on_Home_Page()[0m
^User Navigate to LogIn Page$[32mWhen [0m[32mUser Navigate to LogIn Page[0m                [90m# StepDefinitions.User_Navigate_to_LogIn_Page()[0m
^User enters UserName and Password$[32mAnd [0m[32mUser enters UserName and Password[0m           [90m# StepDefinitions.User_enters_UserName_Password()[0m
^Message displayed Login Successfully$[32mThen [0m[32mMessage displayed Login Successfully[0m       [90m# StepDefinitions.Message_displayed_Login_Successfully()[0m1 Scenarios ([32m1 passed[0m)
4 Steps ([32m4 passed[0m)
0m0.182s

Features(剧本)

Features Options帮助Cucumber在项目文件夹结构中指定Feature文件。您一定注意到,从第一章开始,我们就在TestRunner类中指定了Feature Option。我们只需要指定文件夹路径,Cucumber就会自动找到所有的‘.features‘文件夹中的扩展文件。可以这样指定:

features = “Feature“

或者如果Feature 文件位于深层文件夹结构中

features = “src/test/features“

Glue

它与Features选项几乎是相同的,但唯一的区别是它帮助Cucumber定位step Definitions文件。当Cucumber遇到一个步骤时,它会在Glue Option中提到的文件夹中的所有文件中寻找一个步骤定义。可以这样指定:

glue = “stepDefinition“

或者如果Feature 文件位于深层文件夹结构中

glue = “src/test/stepDeinition“

Format

Format Option用于为输出报告指定不同的格式化选项。可用作事项的各种选择如下:

Pretty: 为查找错误,使用额外的颜色和堆栈打印Gherkin源信息。 使用以下代码:

format = {“pretty“}

HTML: 这将在for-matter本身标注的位置生成一个HTML报告。 使用以下代码:

format = {“html:Folder_Name“}

JSON: 此报告包含JSON格式的gherkin 源的所有信息。 此报告旨在通过第三方工具(如Cucumber Jenkins)进行后处理,转换为另一种可视格式。 使用以下代码:

format = {“json:Folder_Name/cucumber.json“}

JUnit: 该报告生成XML文件,就像Apache Ant的JUnit报告任务一样。 大多数Continuous Integration服务器都会解析这种XML格式,他们将使用它来生成可视化报告。 使用以下代码:

format = { “junit:Folder_Name/cucumber.xml“}

Cucumber之五Cucumber Options详解相关推荐

  1. Http:Get、Post、Put、Delete、Head、Options详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.概述 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是 ...

  2. MAVEN专题之五、私服详解

    maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第5篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...

  3. BitmapFactory.Options详解

    在通过BitmapFactory.decodeFile(String path)方法将突破转成Bitmap时,遇到大一些的图片,我们经常会遇到OOM(Out Of Memory)的问题.怎么避免它呢? ...

  4. Android中BitmapFactory.Options详解

    在Android中,BitmapFactory相信大家都很熟悉了,这个类里面的所有方法都是用来解码创建一个Bitmap,其中有一个重要的类是Options,此类用于解码Bitmap时的各种参数控制,那 ...

  5. 【TensorFlow】TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型

    本文是<TensorFlow从浅入深>系列之第5篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  6. 网络管理常用命令之五 - Tracert 命令详解(图文)

    5.tracert命令... Tracert工作原理... 不带选项... -d选项... -h选项... -w选项... 5.tracert命令 Tracert是路由跟踪程序,用于确定 IP 数据报 ...

  7. leveldb 详解

    这是转载的一篇博客, 看到原博客,  甚是惊叹, 把leveldb分析理解的如此之深, 甚是佩服, 同时, 也表示感谢, 感谢分享! LevelDb日知录之一:LevelDb 101 说起LevelD ...

  8. Fragment详解之五——Fragment间参数传递

    相关文章: 1.<Fragment详解之一--概述> 2.<Fragment详解之二--基本使用方法> 3.<Fragment详解之三--管理Fragment(1)> ...

  9. LVS原理详解及部署之五:LVS+keepalived实现负载均衡高可用

    本文我们主要讲解的是LVS通过keepalived来实现负载均衡和高可用,而不是我们第三篇文章介绍的通过手动的方式来进行配置.通过脚本的方式来显示RS节点的健康检查和LVS的故障切换.此文会通过一个实 ...

最新文章

  1. 《LeetCode力扣练习》第16题 C语言版 (做出来就行,别问我效率。。。。)
  2. 阿里云Ubuntu 14.04 + Nginx + let's encrypt 搭建https访问
  3. Asp.net中的Cache--HttpRuntim.Cache 和 HttpContext.Current.Cache
  4. python 引用和对象理解
  5. Pytorch基础(二)—— Transforms详解
  6. 老婆晚上不想睡?这个操作你要会!
  7. 用按钮控制歌单的上一曲和下一曲 0130 winform
  8. 成信大c语言答案P239.C,2011秋季江苏省计算机二级C语言试题与答案.doc
  9. TP框架设置的LOG_LEVEL不起作用
  10. 简单提高MIDI音量的方法
  11. 以云服务器产品为例,深度分析比对华为云、阿里云、腾讯云
  12. 服务器和交换机物理连接_交换机发生网络通信故障怎么解决?
  13. PHP为什么会被认为是草根语言?
  14. 我的理想200字计算机工程师,我的理想作文200字
  15. 2的30次方用计算机怎么按,计算机基础试题2
  16. 指定“Vary: Accept-Encoding”标头 --压缩
  17. JZOJ 1008 1010
  18. CentOS安装MySql和配置
  19. 为企业用户配置专有UPN后缀
  20. 我在“下沉市场”生活的一个月(转)

热门文章

  1. [android] 手机卫士来电显示号码归属地
  2. Postgresql在线分区插件之pg_rewrite使用
  3. CQ40_519TX_XP_SP3系统声卡无声、显卡驱动安装方法
  4. 基于微信小程序云开发(校园许愿墙app)妄想替代学校的表白墙
  5. WEB前端 - 如何实现在图片上盖章的效果,类似合同上的印章盖章效果(一个图片,一个印章图片,合并到一起且印章半透明形成盖章效果)最牛解决方案,适用于任何前端项目!
  6. Python必备库大全,建议留用
  7. 用Python批量生成指定尺寸的缩略图!比Ps好用!
  8. 零基础学C++——黑马程序员课程笔记(C++核心编程篇)
  9. docker搭建searx_Searx
  10. Linux 下搭建NFS网络服务器 Win7 下访问挂载