在RSpec中自动创建测试ID

时间:2013-08-06 04:43:42

标签: ruby testing rspec

我正在使用RSpec来测试RESTful API(非Rails应用程序)。我有很多测试套件(每个API一个)和测试用例。我想知道是否有任何简单的方法为标题中的每个测试用例创建测试ID,因此我可以轻松地将测试用例引用到故障单或其他测试用例中。

e.g:

it "send request to /api/cart with GET - TC001" do
...
end

TC001是我提到的身份。

或者,我们有没有更好的方式来引用RSpec中的任何特定测试用例?

1 个答案:

答案 0 :(得分:2)

据我所知,RSpec没有提供自动为您的测试用例分配ID的工具,但它确实提供了一些机制,一旦您拥有它们就可以使用它们。

最简单的方法是将您的测试用例ID添加到问题所在的it第一个参数中:

describe Fixnum do
  it "should support + operator (TC001)" do
    (5 + 8).should == 13
  end
end

然后,您将在rspec的详细输出中看到测试用例ID,甚至可以以大多数时间工作的方式过滤特定的测试用例:

$ rspec -f d -e TC001 specs/test.rb

Run options: include {:full_description=>/TC001/}

Fixnum
  should support + operator (TC001)

Finished in 0.00041 seconds
1 example, 0 failures

如果这对你来说还不够,那么你可以通过使用测试选项标签hash来创建自己的标签和管理测试方案:

describe Fixnum do
  it "should support + operator", case_id: 'TC001' do
    (5 + 8).should == 13
  end
end

可以按如下方式过滤:

$ rspec -f d -t case_id:TC001 specs/test.rb

Run options: include {:case_id=>"TC001"}

Fixnum
  should support + operator

Finished in 0.0004 seconds
1 example, 0 failures

但现在请注意,标签数据不会出现在输出中。实际上它并没有出现在rspec gem as-is提供的任何输出选项中。但是,您可以使用RSpec的自定义格式化程序以及控制测试套件行为的其他代码来访问它。因此,您可以使用它来驱动自定义报告,例如带有测试用例标签等的.csvs,跟踪测试用例以及数据库中案例的通过/失败演变等。