Pythonのunittestで警告が投げられたことをテストする方法は?
2023-08-25 18:21:36
質問
私はPythonで次の関数を持っており、関数が引数として0を取得した場合、それは警告を投げることをunittestでテストしたいです。私はすでにassertRaisesを試しましたが、私は警告を発生させないので、それはうまくいきません。
def isZero(i):
if i != 0:
print "OK"
else:
warning = Warning("the input is 0!")
print warning
return i
どのように解決するのですか?
この場合
catch_warnings
コンテキストマネージャーを使用します。基本的にこれは警告ハンドラをモックすることができるので、警告の詳細を確認することができます。詳細は
公式ドキュメント
を参照してください。
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings(record=True) as w:
# Cause all warnings to always be triggered.
warnings.simplefilter("always")
# Trigger a warning.
fxn()
# Verify some things
assert len(w) == 1
assert issubclass(w[-1].category, DeprecationWarning)
assert "deprecated" in str(w[-1].message)
関連
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] Pythonの関数が例外を投げるかどうかをテストするにはどうすればよいですか?
-
[解決済み] 例外がスローされたことを確認するためにAssertを使用するにはどうすればよいですか?
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
-
[解決済み】Pythonでプログラムを中断させずに警告を発生させる
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
最新
-
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です。未束縛のメソッドを束縛する?
-
[解決済み] バブルソートの宿題
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複