Ruby/Rails/Riot программно получает доступ к результатам теста
Я использую Riot ( https://github.com/thumblemonks/riot) для тестирования, хотя мы могли бы использовать что-то еще.
Я получаю тестовый вывод, как это:
> ruby my_test_file.rb
Running a test
+ something works
+ something else works
- something failed
Я хотел бы получить программный доступ к этой информации. Что-то вроде:
test = TestClass.load("my_test_file.rb")
result = test.run
result.errors # some array
1 ответ
Решение
Отвечая на мой собственный вопрос. Я могу опубликовать более подробный ответ, если кому-то интересно.
Суть этого заключается в оценке тестовых файлов и получении контекста из оцениваемого теста:
Riot.alone! # so Riot doesn't automatically run the tests
["/path/to/test/file"].each do |test_file|
eval(IO.read(path), binding, test_file) # load test file
Riot.root_contexts.each do |context|
reporter = MyReporter.new
context.run reporter
# do something cool with reporter results
end
Riot.root_contexts.clear # clean out root_contexts so it's clean for the next run
end
Где MyReporter - ваша реализация, которая обрабатывает результаты тестов на прохождение / провал. См. https://github.com/thumblemonks/riot/blob/master/lib/riot/reporter.rb