jua*_*aid 5 ruby testing cucumber
我有一个场景大纲,有两个不同的变量.一个变量有大约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...
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法在不必写出每个组合的情况下运行它?变量的大小和内容以后都会发生变化,我宁愿有一个单一的数据结构来处理.
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
Run Code Online (Sandbox Code Playgroud)
@var_a_combos是@var_b_combos
一个 Enumerable,包含该类型的所有不同可能性。When I run every combination
迭代这两个变量并测试每个组合。它不会使用断言,而是创建一个 @results(String) 变量,该变量将列出所有失败及其所需的调试数据。Then good stuff should happen
运行代码@results.should
eql ""以确定测试用例是否通过/失败。使用字符串变量来保存结果(而不是断言)的目的是确保在遇到第一次失败时测试不会停止。
我真的不喜欢这个解决方案,但这是迄今为止我能想到的最好的解决方案。我很欣赏其他答案,但这个测试确实是集成测试,我确实需要测试每个组合。
如果有人发布进一步的答案,我将对其进行审查,并在我认为更好的情况下更改已接受的答案。