0

私のテストの ExUnit.Callbacks.setup関数は、テストが失敗したときに ExUnit の出力に含めたい ID を作成します。これを行う簡単な方法はありますか?カスタムの ExUnit.Formatter を記述できることはわかっていますが、それはやり過ぎのように思えます。

この質問の文脈は、単体テストではなく、複数のマイクロサービスにまたがる統合テストを作成するために ExUnit を使用しているということです。関数が生成するIDsetupは、マイクロサービス間で保持される Spandex トレース ID です。テストが失敗した場合、トレース ID が何であったかを知りたいので、その ID のすべてのマイクロサービスのログを grep できます。

4

1 に答える 1

3

これを行う 1 つの方法は、 and friendsの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
于 2019-12-31T03:25:24.067 に答える