2013-08-06 2 views
3

Я использую RSpec для тестирования RESTful API (не Rails-приложения). У меня есть множество наборов тестов (по одному API каждый) и тестовых примеров. Мне интересно, есть ли простой способ создать идентификатор теста для каждого тестового примера в заголовке, поэтому я могу легко передать тестовый пример в билете или другим.Создать идентификатор теста автоматически в RSpec

.: например

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

TC001 является идентификатор, который я упоминаю.

Или есть ли лучший способ для нас обратиться к любому конкретному тестовому примеру в RSpec?

+2

Когда 'rspec' сообщает об ошибке тестирования, а также сообщая название теста, он будет содержать номер строки, где начинается блок 'it', и он может быть вызван для запуска только этого теста, например 'rspec specs/test.rb: 57' (это тот же формат, что и вывод rspec). Я не уверен, что это будет адекватно для ваших нужд, это было полезно для меня. –

+0

В принципе мне нужна краткая ссылка на любые тестовые примеры в наборе тестов, а не только на отказ. И номер строки всегда меняется при обновлении набора тестов. – ccy

+1

Спецификации rspec -e TC001 также будут запускать эту спецификацию (если она находится в папке спецификаций) –

ответ

2

Насколько я знаю, RSpec не предоставляет инструменты для автоматического присваивания идентификаторов вашим тестовым примерам, но он предоставляет несколько механизмов для их использования после их использования.

Простейший является добавлять тематические идентификаторы тестов на it первого параметра, как у вас в вопросе:

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

вы увидите тестовый случай идентификатор в многословных выходах из 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 

Но теперь обратите внимание, что данные теги не появляется на выходе. Фактически он не появляется ни в одном из вариантов вывода, поставляемых с жемчужиной rspec as-is. Тем не менее, вы можете получить к нему доступ в пользовательских форматировщиках RSpec и в другом коде, который контролирует поведение тестового набора. Таким образом, вы можете использовать это для создания пользовательских отчетов, таких как .csvs с ярлыками тестовых примеров и т. Д., Отслеживание тестовых случаев и переход/отказ в развитии случаев в базе данных и т. Д.

Смежные вопросы