如何为失败的测试向ExUnit的输出添加信息

时间:2019-12-31 02:45:09

标签: elixir ex-unit

我的测试的lock函数创建一个ID,当测试失败时,我想将该ID包含在ExUnit的输出中。有没有简单的方法可以做到这一点?我知道我可以编写一个自定义的ExUnit.Formatter,但这似乎有点过分。

这个问题的背景是我正在使用ExUnit来帮助编写不是单元测试而是跨多个微服务的集成测试。 ExUnit.Callbacks.setup函数生成的ID是在微服务之间持久存在的Spandex跟踪ID。当测试失败时,我想知道其跟踪ID是什么,以便可以grep该ID的所有微服务日志。

1 个答案:

答案 0 :(得分:2)

一种方法是使用assert和朋友的message参数。该消息仅在断言失败时显示。

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