无论如何我可以运行相同的测试用例但每次都有不同的值吗?

时间:2017-08-21 17:50:04

标签: ruby jenkins automation cucumber

我有一个测试用例来测试每天在特定环境中的特定场景,这是由jenkins工作自动完成的。

Scenario Outline: Verify a user can book 
 Given I navigate to the "xxxxx" Page
 And I set the "Location" field with "<location>" value
 And I click on the "Search" button on "xxxxx" page
 Then I verify the "Results" page is displayed
 Examples:
  | location |
  |Boston    |

我需要在内部有一个包含20个位置的列表,每次执行测试用例时,它会改变位置的某些方式,可以是ramdon或任何顺序,但总是在变化。 我使用黄瓜,水豚,当然还有红宝石

请问?

2 个答案:

答案 0 :(得分:1)

Cucumber在用作编程语言方面有很多局限性。如果将它移动到ruby文件中(黄瓜文件不是红宝石),这样做会更容易。

一个选项是制作一个内部调用这些其他步骤的步骤。有些人可能会说从其他步骤中调用方法而不是步骤会更好,但是如果你已经将你的案例写成步骤而不是这样做会更快这样做因为你不必将代码重写为方法。顺便说一下,在方法中编写测试代码然后从步骤中调用它们是一个好主意,而不是将所有逻辑放在测试用例中。

黄瓜档案:

Scenario Outline: Verify a user can book
  Given I navigate to the "xxxxx" Page
  Then the search bar works

Ruby文件:

Then /the search bar works/ do
  locations = ["Boston", "Berkeley"].shuffle
  locations.each do |location|
    step %{I set the "Location" field with "#{location}" value}
    step %{I click on the "Search" button on "xxxxx" page}
    step %{I verify the "Results" page is displayed}
  end
end

这可以被认为是非语义的另一个原因是因为它在一个测试案例中包含太多。但是,除了简单地用黄瓜文件中的原始步骤定义复制粘贴不同的硬编码值之外,我不确定是否可以解决这个问题。

答案 1 :(得分:0)

可能

locations = ["Boston", ...]
day_of_the_month = Date.new(2001,2,3).mday
today_location = locations[(day_of_the_month - 1) % locations.count]

我在第三行使用- 1,因为#mday返回1到31之间的整数。