Как добавить в вывод ExUnit информацию о неудачных тестах

Функция ExUnit.Callbacks.setup моих тестов создает идентификатор, который я хочу включить в вывод ExUnit в случае сбоя теста. Есть ли простой способ сделать это? Я знаю, что мог бы написать собственный ExUnit.Formatter, но это кажется излишним.

Контекст этого вопроса заключается в том, что я использую ExUnit, чтобы писать не модульные тесты, а интеграционные тесты, охватывающие несколько микросервисов. Идентификатор, который генерирует функция setup, представляет собой идентификатор трассировки Spandex, который сохраняется во всех микрослужбах. Когда тест терпит неудачу, я хочу знать, какой у него идентификатор трассировки, чтобы я мог собрать все журналы микросервисов для этого идентификатора.


person Christopher Simmons    schedule 31.12.2019    source источник


Ответы (1)


Один из способов сделать это — использовать параметр message в assert и друзья. Сообщение будет отображаться только в случае сбоя утверждения.

setup do
  # Generate a trace id and pass it to each test.
  %{trace_id: Spandex.new_trace_id()}
end

test "something", %{trace_id: trace_id} do
  response = SomeService.do_something(trace_id)

  # Use the failure message to display the trace id.
  assert response[:body] == "ok", "Failed with trace id: #{trace_id}"
end
person zwippie    schedule 31.12.2019