用黄瓜进行组合测试

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)

问题:有没有办法在不必写出每个组合的情况下运行它?变量的大小和内容以后都会发生变化,我宁愿有一个单一的数据结构来处理.

jua*_*aid 2

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 ""以确定测试用例是否通过/失败。

使用字符串变量来保存结果(而不是断言)的目的是确保在遇到第一次失败时测试不会停止。

我真的不喜欢这个解决方案,但这是迄今为止我能想到的最好的解决方案。我很欣赏其他答案,但这个测试确实是集成测试,我确实需要测试每个组合。

如果有人发布进一步的答案,我将对其进行审查,并在我认为更好的情况下更改已接受的答案。