0

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

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

4

1 回答 1

3

一种方法是使用message参数 ofassert和朋友。仅当断言失败时才会显示该消息。

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
于 2019-12-31T03:25:24.067 回答