nosetests --pdb
エラーや失敗で停止させてくれますが、これは私のニーズには遅すぎます。実行中にコードをステップ実行すると、問題のある場所をデバッグするのに役立ちます。
ただし、nosetestは、相対的なインポートに依存するテスト(パッケージ内のテスト)を許可するので便利です。
テストを実行する前にブレークポイントを設定するにはどうすればよいですか?現在、私は使用しています:
python -m pdb /path/to/my/nosetests testfile.py
この解決策は適切ではありません。 Nosetestsはpdbの出力に干渉し、キーボードコントロール(矢印キーなど)が壊れています。
Import pdbを使用します。 pdb.set_trace()は良い考えのようですが、nosetestsはpdbコンソールへのアクセスをブロックしています。
あなたは付け加えられます
import pdb; pdb.set_trace()
デバッガで停止するソース内の任意の場所。
-s
は、stdout
をキャプチャしないように鼻に付けます。
-s
を使用することを覚えておくよりも、Noseに付属しているset_trace
バリアントを使用することをお勧めします。追加
from nose.tools import set_trace; set_trace()
デバッガに侵入したい場所ならどこでも。 stdin/outリダイレクトはあなたのために世話をされます。私が遭遇した唯一の奇妙な副作用は、ノーズラン中のデバッグ中に(run
を使用して)pdb内からコードを再起動できないことです。
ipythonを使用している場合、無制限の素晴らしい使用方法:
import ipdb; ipdb.set_trace()
*無制限の素晴らしい:ipythonのように-オートコンプリート、カラーリングなど.