1. ホーム
  2. python

[解決済み] pytestテスト実行中にipdb.set_trace()を任意に実行する方法

2022-10-23 20:47:05

質問

私はテストスイートにpytestを使用しています。複雑なコンポーネント間のテストでバグを捕捉する際に、私は import ipdb; ipdb.set_trace() を置きたいと思います。

しかし、pytestはsys.stdin/sys.stdoutをトラップするため、ipdbは失敗します。pytestでテストしている間、どのようにipdbを使用することができますか。

私は、失敗した後にpdbやipdbにジャンプすることに興味があるのではなく、コードの任意の場所にブレークを置き、失敗が発生する前にそこでデバッグできるようにしたいと思っています。

どのように解決するのですか?

pytestはデフォルトで出力をキャプチャするため、エラーが発生します。

でpytestを実行することができます。 -s オプションを付けて実行することができます(キャプチャ出力をオフにします)。例えば

py.test -s my_test.py

で、その後に my_test.py :

import ipdb;
ipdb.set_trace()