問題タブ [python-unittest.mock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
562 参照

python - 初期化されていないグローバル変数をモックする方法は?

モジュールに初期化されていないグローバル変数があり、アプリケーションの起動時に正しく初期化されます。型チェックには、python >= 3.6 の値を使用せずに構文を使用するvar: Typeため、デフォルト値 ( になりますNone) の型チェックを複雑にする必要はありません。

ここで、このグローバル変数を使用する別の関数を単体テストしたいのですが、からエラーが発生しunittest.mock.patchます。これが私がやっていることの簡略化されたバージョンです:

  • ファイル mod.py:
  • ファイル test.py:
  • で実行しpython3 -m unittest test.pyます。

例外は

mod.py の 1 行目をコメントし、2 行目をコメント解除すると、テストはパスします。

アプリケーション コードでグローバル変数のデフォルト値を定義せずにテストに合格する方法はありますか?


編集:コメントに記載されているように、実際の変数は、テスト中にロードしたくない解析済みの構成ファイルです。これはコマンド ライン アプリケーションで使用されるため、変数は常にコマンド ラインの解析が完了した後に設定されます。実際のコードはherehereです。実際のテストでは、グローバル変数を bool として直接モックしようとしているのではなく、config オブジェクトのいくつかの属性をモックしようとしています。
0 投票する
2 に答える
301 参照

python - Python 3 モジュール内の外部関数を除いて、try の単体テストを作成する方法

try exceptPython のモジュールの関数定義の外で定義されているブロックの Python 3 unittest の書き方を知りたいです。

package/module.pyのようなコード ブロックがあるとします。

OS のインポート

(実際のコードは気にしないでください。os.getenv('NOT_EXISTING_KEY', False)この特定のケースで使用できることはわかっています。私が興味を持っているのは、モジュール内(関数外)の try-except ブロックが期待どおりに動作することを実際にテストすることです。

package.module.CONSTANT期待値に設定されていることを確認する単体テストを作成するにはどうすればよいですか?

unittest ファイル (私は pytest を使用) には、次のようなものがあります。

try ブロックが正しく実行された場合、CONSTANT が期待どおりであることをテストします。

ただし、try ブロックの os.environ で例外が発生し、CONSTANT が False に設定されていることをテストできるように、インポート機構をモックする方法はわかりません。

どうやってやるの?

0 投票する
1 に答える
92 参照

python - 関数の Python モック テスト配列

以下は私のpythonモジュールですmy_func.py

function_1関数内の正しいrequest引数で呼び出されget_data()、次のテストが正常に機能するかどうかをテストしたい。

Pythonモジュールmy_func.pyを関数の配列がある次のように変更すると、関数を個別にモックする方法に苦労しています。