Ruby 在RSpec中自动创建测试id

Ruby 在RSpec中自动创建测试id,ruby,testing,rspec,Ruby,Testing,Rspec,我正在使用RSpec测试restfulapi(不是Rails应用程序)。我有很多测试套件(每个API一个)和测试用例。我想知道是否有任何简单的方法可以为标题中的每个测试用例创建一个测试id,这样我就可以很容易地在票据中引用测试用例或引用其他测试用例 e、 g: TC001是我提到的id 或者有没有更好的方法让我们在RSpec中引用任何特定的测试用例?据我所知,RSpec不提供自动为您的测试用例分配ID的工具,但它提供了一些机制,一旦您拥有了它们,就可以使用它们 最简单的方法是将测试用例ID添加到

我正在使用RSpec测试restfulapi(不是Rails应用程序)。我有很多测试套件(每个API一个)和测试用例。我想知道是否有任何简单的方法可以为标题中的每个测试用例创建一个测试id,这样我就可以很容易地在票据中引用测试用例或引用其他测试用例

e、 g:

TC001是我提到的id


或者有没有更好的方法让我们在RSpec中引用任何特定的测试用例?

据我所知,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
如果这对您来说还不够,那么您可以通过使用测试选项标签哈希创建自己的标签和管理测试的方案来进一步解决问题:

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提供的任何输出选项中都没有它。然而,您可以在RSpec的自定义格式化程序中以及在控制测试套件行为的其他代码中访问它。因此,您可以使用它来驱动自定义报告,例如带有测试用例标签的.csv等,跟踪测试用例以及数据库中用例的通过/失败演变等。

rspec
报告测试失败以及报告测试标题时,它将包括
块开始的行号,可以调用它来运行该测试,例如
rspec specs/test.rb:57
(这与rspec的输出格式相同)。我不确定这是否足以满足您的需要,它对我很有用。基本上,我需要快速参考测试套件中的任何测试用例,而不仅仅是失败的测试用例。每当我们更新测试套件时,行号总是在变化。rspec specs-e TC001也会运行该规范(假设它在specs文件夹中)
$ 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