考察とは名ばかりで感想?

最近は主にプログラミング(AIコーディング)と資産運用(FXで食ってくぞ!)

pytestの出力オプションをちょっと試した記録

AIにデバッグをやらせていたら、Pythonのテストをやるのに試行錯誤していたのですよ

pytest -v --tb=short 2>&1 | Tee-Object -FilePath test.log

こんな感じで、単純にpytestだけのコマンドで実行するところから段々オプションを増やして繰り返していたという。何が違うのか気になったので調べてみました

Tee-Objectコマンドレット

|以降のコマンドは、コンソールに表示された内容をファイルに保存するためのものです

つまりパイプライン演算子|によって、前にあるpytest -v --tb=short 2>&1の出力が、後ろのTee-Object -FilePath test.logに渡されます。するとTee-Objectコマンドレットが、ファイル(とコンソール)に出力してくれるわけです

2>&1リダイレクト

これはエラーメッセージも一緒に出力するためのものです

qiita.com

詳細は↑のようなサイトを見てもらうとして、実際の出力の違いを見てみましょう。分かりやすいですね?

2>&1有り↑・無し↓

トレースバック短縮オプション

--tb=shortを指定すると、エラーの詳細表示(トレースバック)が短縮形式になります

--tb=short有り↑・無し↓


(中略)

冗長 (verbose) オプション

-vを指定すると、テストに含まれる個々のテストの名称や結果*1が省略されずに表示されます*2

-v有り↑・無し↓

AIは何をやっていたのか

  1. 詳細を知りたいので-vを追加
  2. 長すぎてよく分からないので--tb=shortで表示を減らす
  3. それでも長いので結果をファイルに保存してじっくり見れるようにする

という流れで何回もテストしていたらしい

*1:省略されていると成功が"."、失敗が"F"で表示されます

*2:他にも増えるところはありますが