在另一个场景之前使用标签调用特定场景?

如何解决在另一个场景之前使用标签调用特定场景?

如何将cucumber hooks翻译成(java script nodejs)如下语句:

在@tag2之前调用@tag1

当我自动运行@tag2 时,@tag1 在@tag2 之前被调用

@tag1 
Scenario: populate cars
...

@tag2 
Scenario: sell car
... 

我想使用这个命令:/node_modules/.bin/cucumber.js --tags "@tag2"

在这种情况下,“Before”钩子应该刺激标签 tag1 在 tag2 之前运行。

这种情况下如何写Before hook?


 Before('@tag2',function () {
...
}

第二个问题

是否可以从一个标签表达式组合一个标签

等式。 @tag3 = @tag1 和 @tag2

运行时,命令只被称为 tag3: /node_modules/.bin/cucumber.js --tags "@tag3"

解决方法

您的问题可能有技术解决方案,但实际上有一个哲学解决方案,它也可以作为技术解决方案。

Cucumber 场景应该是独立的。每个场景在单独执行时都应该是一个完整的测试。在出售汽车之前,您需要“填充汽车”是有道理的。您应该创建新的 Given 步骤来模拟“填充汽车”场景中描述的行为,而不是从“销售汽车”场景中调用“填充汽车”场景。

由于您没有提供每个场景的步骤,我只能猜测它们可能是什么。销售汽车的场景可能类似于:

Scenario: sell car
    Given a 1972 "Ford" "Pinto" is in stock # <-- this simulates the "populate cars" step
    When ...
    Then ...

如果您的场景需要不止一辆汽车,另一种方法是使用数据表:

Scenario: sell car
    Given the following cars are in stock: # <-- this simulates the "populate cars scenario
        | Year | Make | Model | Price |
        | 1972 | Ford | Pinto | ...   |
        | 2020 | BMW  | M3    | ...   |
    When ...
    Then ...

Given 步骤的实现取决于您。此步骤可以导航真实用户界面或进行 Web 服务调用以填充汽车。这取决于您,并取决于您可以使用哪些 API 来定义您的黄瓜步骤。

,

https://cucumber.io/docs/cucumber/api/#running-a-subset-of-scenarios

将语言切换到 JS,您将获得所需的所有帮助。

对于这个例子,你会想要类似的东西

./node_modules/.bin/cucumber.js --tags "@tag1 and @tag2"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?