まず、次のような原因が考えられます。
-
キャプチャが無効になっている: pytestの実行時に、
-s
オプションが指定されていないか確認してください。このオプションは、標準出力のキャプチャを無効にします。もし指定されている場合は、オプションを削除して再度テストを実行してみてください。 -
テストの実行方法が間違っている: pytestでは、
capsys
オブジェクトを使用してstdoutのキャプチャを制御します。テストコード内でcapsys
オブジェクトを適切に使用しているか確認してください。例えば、capsys.readouterr()
を使用してキャプチャしたstdoutの内容を取得することができます。
以下に、具体的なコード例を示します。
def test_example(capsys):
print("Hello, pytest!")
captured = capsys.readouterr()
assert captured.out == "Hello, pytest!\n"
この例では、capsys
オブジェクトをtest_example
関数の引数として受け取り、print
文で出力した内容をcapsys.readouterr()
でキャプチャしています。キャプチャした内容はcaptured
変数に格納され、captured.out
を使用してアサートできます。
もし上記の方法でうまくいかない場合は、pytestのバージョンや環境に関連する問題が考えられます。その場合は、最新のpytestバージョンを使用しているか確認し、仮想環境を作成してテストを実行してみてください。