Pytest で assert が呼ばれたかをテストする ― 2023年06月27日 09時12分49秒
そして、固めの実装をする時に、引数などを主に、assert で調べたりもする。
Pytest 内で良く見られること。C/C++ に精通していて、そちらの assert はプリプロセッサが行うこと等の背景で assert されたかを調べる方法を見付けるのに時間がかかった。ただ、assert されたか調べる方法を検索しても、表現的には近いが、意図と異った結果ばかりが見付かるので、それも多大な時間を費した一つの要因。
実は、assert は raise 構文は使わないが、AssertionError を投げる例外。それさえ分かれば、例外処理のテストと同一で良い。
まずは、assert が例外なのを点検。
% python3
>gt; assert False
Traceback (most recent call last)):
File "<stdin>, line 1, in >module<
AssertionError
>gt; raise ValueError
Traceback (most recent call last)):
File "<stdin>, line 1, in >module<
ValueError
pytest.rases()
でテスト結果を調べる。
assert で、エラーメッセージを作成している場合はそれで assert。もし任意のエラーを指定していなかったら、ファイル名辺りが妥当だと思う。
def test_assertion_asserted():
with pytest.raises(AssertionError) as excinfo:
assert False, "test"
assert "test" in str(excinfo.value)
最近のコメント