用黄瓜进行组合测试

时间:2011-05-03 16:43:39

标签: 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...

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

3 个答案:

答案 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文档。