Cucumber之五Cucumber Options详解

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

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

 

此文只是搬运工,最准确的请查看原文,文章来源: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】

 

Cucumber之五Cucumber Options详解_第1张图片

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

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将运行脚本,控制台输出将如下所示:

Cucumber之五Cucumber Options详解_第3张图片

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

出现 [32m  0m   90m等等的看不懂的特殊字符。
Cucumber之五Cucumber Options详解_第4张图片

  @Login @tag1
  Scenario: 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()[0m

1 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
Cucumber之五Cucumber Options详解_第5张图片

Glue

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

glue = “stepDefinition

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

glue = “src/test/stepDeinition
Cucumber之五Cucumber Options详解_第6张图片

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)