[解決済み] Pytest を使用して Error が発生しないことを確認する方法
2022-06-13 07:52:30
質問
このようなものがあるとします。
import py, pytest
ERROR1 = ' --- Error : value < 5! ---'
ERROR2 = ' --- Error : value > 10! ---'
class MyError(Exception):
def __init__(self, m):
self.m = m
def __str__(self):
return self.m
def foo(i):
if i < 5:
raise MyError(ERROR1)
elif i > 10:
raise MyError(ERROR2)
return i
# ---------------------- TESTS -------------------------
def test_foo1():
with pytest.raises(MyError) as e:
foo(3)
assert ERROR1 in str(e)
def test_foo2():
with pytest.raises(MyError) as e:
foo(11)
assert ERROR2 in str(e)
def test_foo3():
....
foo(7)
....
Q: MyError が発生しないことをテストする test_foo3() はどのように作ればよいのでしょうか? 明らかに、私はただテストすることができました。
def test_foo3():
assert foo(7) == 7
しかし、私はpytest.raises()を介してそれをテストしたいです。何らかの方法で可能ですか? 例えば:ケースで、その関数"foo"は全く戻り値を持っていません。
def foo(i):
if i < 5:
raise MyError(ERROR1)
elif i > 10:
raise MyError(ERROR2)
この方法でテストするのは意味があるかもしれませんね、イミフ。
どのように解決するのですか?
テストは予期せぬExceptionを発生させた場合、失敗します。foo(7)を実行すれば、MyErrorが発生しないことをテストしたことになります。そのため、以下のようにすれば十分です。
def test_foo3():
foo(7)
もし、明示的にassert文を書きたいのであれば
def test_foo3():
try:
foo(7)
except MyError:
pytest.fail("Unexpected MyError ..")
関連
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] どうすれば、文字列中のリテラルな中抜き文字を印刷し、また.formatを使用することができるのでしょうか?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] スクリプトを実行しているPythonのバージョンを確認するにはどうしたらいいですか?
-
[解決済み] NaN値をチェックするにはどうすればよいですか?
-
[解決済み] pytestの実行中に作成された通常の印刷出力を見るにはどうすればよいですか?
-
[解決済み] pytestで例外が発生したことを適切にアサートするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python string splicing.join()とsplitting.split()の説明
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] Python unittest - assertRaisesの反対?