我正在尝试将Cucumber与Test Rail集成。所以我有一个黄瓜红宝石自动化设置。
我希望能够将黄瓜小黄瓜步骤从功能文件作为变量传递到自动化中。
这是因为我想将黄瓜小黄瓜步骤作为HTTP POST发送到测试管理系统中。
小黄瓜特征文件示例:
Scenario: login scenario
Given I am on webpage
When I login
Then I should see that I am logged in
步骤定义代码:
Given(/^I am on webpage$/) do
#do this Given step from the regex match
#but also how do I, some how grab the string 'Given I am on webpage'
#so I can do an HTTP POST on that string
end
或者更好的方法,也许:在我开始任何自动测试之前,我会通过某种方式来解析所有功能文件,并将HTTP POST发送到Test Rail,以更新或填充我添加到Cucumber中的任何新测试。如果是这样的话,我应该怎么做?
您可以像这样捕获步骤名称:
Given(/^(I am on webpage)$/) do |step_name|
puts step_name # or whatever
end
即使步骤需要参数,它也可以工作:
Given(/^(I am on (my|your|their) webpage)$/) do |step_name, pronoun|
puts step_name # or whatever
visit send("#{pronoun}_path")
end
也就是说,我同意Dave McNulla的评论,即Cucumber加上版本控制并没有给测试管理系统留下太多事情要做。
解析功能文件听起来像是一个单独的问题。
我想你一定已经解决了这个问题,因为这个问题是两年前问的。 不过,我最近已经解决了它,我认为也许我的解决方案可以有意义。
两个步骤:
首先,在功能/支持下创建一个名为 hooks.rb 的新文件
touch features/support/hooks.rb
其次,将这些内容添加到hooks.rb
文件中。
Before do |scenario|
$step_index = 0
$stop_count = scenario.test_steps.count
@scenario = scenario
end
AfterStep do |step|
if $step_index < $stop_count
puts "steps: #{@scenario.test_steps[$step_index].text}n"
end
$step_index += 2
end
跑
cucumber features/XXX.feature
您将在终端上找到打印出的步骤名称。