我有一个场景大纲,有两个不同的变量。一个变量有大约20个不同的值,另一个变量有3个。
我需要能够测试每一个组合,我需要在一个单独的场景中,因为它们必须独立测试。
目前,我只是手工编写(在示例中它们是整数,但在我的测试中没有):
Scenario Outline: Test my stuff
Given first var is <var_a>
And second var is <var_b>
When I do stuff
Then good stuff should happen
Examples:
| var_a | var_b |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
etc...
问题:有没有办法在不必写出每个组合的情况下运行它?变量的大小和内容以后都会发生变化,我宁愿有一个数据结构来处理。
答案 0 :(得分:1)
Scenario: Test my stuff
Given first var combinations is @var_a_combos
Given second var combinations is @var_b_combos
When I run every combination
Then good stuff should happen
@var_a_combos
和@var_b_combos
是一个包含每个的枚举
这种类型的可能性不同。When I run every combination
将迭代两个变量和
测试每一个组合。
它不是使用断言
将改为创建一个
@results(String)变量将
列出任何故障及其要求
调试数据。Then good stuff should happen
将运行代码@results.should
eql ""
以确定是否进行测试
案件通过/失败。使用String变量来保存结果(而不是断言)的目的是确保在遇到第一个失败时测试不会停止。
我真的不喜欢这个解决方案,但这是迄今为止我能想到的最好的解决方案。我很欣赏其他答案,但这个测试确实是集成测试,我确实需要测试每个组合。
如果有人发布了更多答案,我会审核它们并在我认为更好的情况下更改已接受的答案。
答案 1 :(得分:0)
由于测试是针对UI小部件的,并且您尝试在单元级别进行测试,因此您应该查看QUnit(或其他javascript单元测试框架,但这个是我个人的偏好)。您甚至可以通过黄瓜运行QUnit测试,如Test sorting with Cucumber and Capybara
答案 2 :(得分:-1)
你确定你真的需要测试每种组合吗?你能解释一下这个问题的背景吗?
无论如何,关于在单独场景中运行所有内容的查询,您需要一个带示例的场景大纲。请参阅Cucumber文档。