テストモジュールではない別のPythonファイルに、私たちのカスタムアサーションをすべて定義しました。例えばpytestを非テストモジュールでアサートする方法
: custom_asserts.py
class CustomAsserts(object):
def silly_assert(self, foo, bar):
assert foo == bar , 'some error message'
我々はテストで直接assert
を使用している場合は、我々は非常に便利ですAssertionErrorが、程度の余分な情報を取得します。直接テストで主張使いの
出力:
> assert 'foo' == 'bar', 'some error message'
E AssertionError: some error message
E assert 'foo' == 'bar'
E - foo
E + bar
しかし、我々は、我々は別のモジュールで定義されたアサーションメソッドを呼び出した場合、余分な情報が表示されませんことがわかりました。テストの実行後
from custom_asserts import CustomAsserts
asserts = CustomAsserts()
def test_silly():
asserts.silly_assert('foo', 'bar')
出力:
> assert 'foo' == 'bar', 'some error message'
E AssertionError: some error message
そして、我々はまた、pytestドキュメントでこれを見つけた:Advanced assertion introspection
pytestは、直接そのテスト 収集プロセスによって発見されたテストモジュールを書き換えしたがって、 自身ではないモジュールをサポートしているため、テストモジュールは書き換えられません。
私の質問は、pytestにテストモジュールと同じように同じアサートを他のモジュールに書き直させる方法があるかどうかです。または、それを達成するための何かのハッキーな方法はありますか?
[あなた自身の質問に答えるのもいいですし、奨励さえも!](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) Web UIでは、ソフトウェアを開発している間に発見した重要な情報を文書化して共有する方法と同じように、質問を書いてすぐに答えたいと思うかもしれません。 – clacke