我的测试的lock
函数创建一个ID,当测试失败时,我想将该ID包含在ExUnit的输出中。有没有简单的方法可以做到这一点?我知道我可以编写一个自定义的ExUnit.Formatter,但这似乎有点过分。
这个问题的背景是我正在使用ExUnit来帮助编写不是单元测试而是跨多个微服务的集成测试。 ExUnit.Callbacks.setup
函数生成的ID是在微服务之间持久存在的Spandex跟踪ID。当测试失败时,我想知道其跟踪ID是什么,以便可以grep该ID的所有微服务日志。
答案 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