我有4个场景,例如:
Scenario: test single unit transaction
Given Scene is set
When We did something
Then
| header1 | unit | etc. |
| data1 | data2 | ... |
Scenario: test multiple unit transaction
Given Scene is set
When We did something
Then
| header1 | unit | etc. |
| data1 | data2 | ... |
| data3 | data4 | ... |
Scenario: test single percentage transaction
Given Scene is set
When We did something
Then
| header1 | percentage | etc. |
| data1 | data2 | ... |
Scenario: test multiple percentage transaction
Given Scene is set
When We did something
Then
| header1 | percentage | etc. |
| data1 | data2 | ... |
| data3 | data4 | ... |
它们更复杂、更长,所以我想实现这样的目标:
Scenario Outline: test transactions
Given Scene is set
When We did something
Then
| header1 | unit | etc. |
| <data1> | <data2> | ... |
Examples: single transaction
| header1 | unit | etc. |
| data1 | data2 | ... |
Examples: multiple transaction
| header1 | unit | etc. |
| data1 | data2 | ... | --------> these should run together in one test
| data3 | data4 | ... | -------->
其他类型的交易也是如此。
不幸的是,Cucumber 继续将上述情况作为 3 个不同的场景运行,而不是 2 个,而第二个场景有 2 个事务。 有谁知道如何让它发挥作用吗?
非常感谢。
最佳答案
据我所知,当将 Scenario Outline
与 Examples
一起使用时,它将运行您在示例表中定义的尽可能多的行,因此 Cucumber 可以正常工作你的例子。
不确定您在这些场景中要做什么,但如果您想使用场景大纲
,我认为您需要重组示例
或 你可以尝试这样的事情(未经测试,它可能会变得更复杂):
场景:
Scenario: test transactions
Given the scene is set
When we did something
Then something should happen:
| header1 | unit |
| data1 | data2 |
| data3 | data4 |
步骤: 使用数据类:
@Then("^something should happen:$")
public void explosionsHappen(List<Data> entries) {
for (Data entry : entries) {
//Do stuff to each entry without restarting the scenario
}
}
public class Data {
String header1;
Integer unit;
}
使用数据表:
@Then("^something should happen:$")
public void explosionsHappen(DataTable data) throws Throwable {
for (Map<String, Integer> data : data.asMaps(String.class, Integer.class)) {
//Write code to handle Datatable
}
}
更多相关信息here和 here 。对于第二个链接,请浏览功能/步骤并检查它们是如何实现的。
可能还有其他方法可以实现您想要的功能。希望这有帮助!
关于java - 使用 Cucumber 在一次测试中运行包含更多数据行的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45555425/