3

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

例如:

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

TC001 是我提到的 id。

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

4

1 回答 1

2

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

最简单的是将您的测试用例 id 添加到第it一个参数中,就像您在问题中所拥有的那样:

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

然后,您将在 的详细输出中看到测试用例 id,rspec甚至可以以在大多数情况下都有效的方式过滤特定测试用例:

$ 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

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

于 2013-08-07T13:17:56.970 回答