問題タブ [python-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 に答える
1510 参照

django - Django - how to change FileField upload_to path during testing

I am writing a test case for a Django model with a FileField. I'd like to change the upload path to prevent tests from having side effects on the rest of the system.

I have tried passing a callable to upload_to and patching that in tests:

However this doesn't seem to work, and I believe the reason is that upload_path is dereferenced by FileField before any test code gets run, so it's too late to patch things.

How can I have test code change what upload_to is? Failing that, how can a model check if it's being run by a test?

0 投票する
2 に答える
8482 参照

python - Python "Mock" オブジェクトにインスタンス メソッドを追加できますか?

mock.Mock()オブジェクトを作成しsession、インスタンス メソッドのように機能するメソッドを追加して、モック オブジェクトへの参照を渡し、selfメソッドが状態をモック オブジェクトに追加できるようにしたいと考えています。types.MethodTypeこれは可能ですか (たとえば、モックの組み込み API を使用して手動で使用せずに)、またはそれを回避する方法を見つける必要がありますか?

これはRuby用で、同じではないにしても、似たようなものをカバーしているようです残念ながら、私は Ruby についてよく知りません。

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

python - 1 つの Django アプリでデコレーターをモックする

テストしたい

  • ビュー デコレータが適切に機能する場合
  • 適切なビューが呼び出された場合

したがって、ここにデコレータget_objectとビューfeaturesがありmyapp.viewsます。

私はこれを嘲笑してみます:

モック オブジェクトが呼び出されていないかのように、これは何も表示しません。

装飾されたビューを適切にモックするにはどうすればよいですか?

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

python - djangoテストでフォームにパッチを当てる(モックする)フォーム

mock.patch でフォームをモックしようとしましたが、できません。私はこのコードを持っています

フォーム.py

ビュー.py:

このビューを個別にテストしたいと思います。私は mock.patch でフォームにパッチを当てようとしましたが、そのようなものを書きました:

tests.py:

解決策をグーグルで検索しようとしましたが、何も見つかりませんでした

回答済み: @dstanek に感謝します。良い答えとコードの良いサンプル

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

django - Django のクラスベースのビューで関数をモックする

作業中の API に Django REST Framework を使用しています。いくつかの理由から、クラスベースのビューを使用したいと考えています。ただし、私は単体テストに少しこだわりがあり、単体テストがデータベースに触れることは決して許しません。注: 私は常に、Carl Meyer が Pycon 2012 で示した「トリック」を使用します。そこで彼は Cursor ラッパーをモックアウトします。

スライドに興味がある場合は、ここにリンクがあります。

ビューの 1 つに、データベース内の何かをチェックするメソッドがあります。DRY であるためには、POST と PUT の間で共有されます。しかし、単体テストのためにそれをモックするのに問題があります。これは、クラスメソッド as_view が新しいインスタンスとクラスのディスパッチを作成し、ディスパッチが返す「ハンドラ」関数を返すためです。そのため、クラスベースのビューで共有メソッドを取得してモックすることができないようです。

クラス ベースのビューで使用されるモデルをモック アウトすることはできますが、「DRY」であるという目標を本質的に破り、POST と PUT の両方でコードをコピーする必要があります。コードをリファクタリングして、ロジックをモデルに移動できると思います。しかし、私はそれをやりたいとは思っていません。

クラスベースのビューの共有メソッドをモックアウトして、実際にデータベースに触れないようにするにはどうすればよいでしょうか? それらを避けるだけですか?

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

python-2.7 - IPython Interactive Shell を組み込んだ Python アプリケーションの単体テストをどのように作成しますか?

シミュレーションの特定の時間に停止し、いくつかの情報を取得して観察してから、シミュレーションを続行できるようにする必要がある長時間実行シミュレーションがあります。最近、テスト駆動設計手法を使い始めましたが、残念ながら、インタラクティブ シェルにドロップするアプリケーションを単体テストする方法がわかりません。

これが私がやろうとしていることの基本的な考え方です:

以下は、peek_a_boo モジュールの使用例です。

私の最初の傾向は、モックを使用して埋め込みメソッドにパッチを適用し、正しい引数で呼び出されたことを確認することですが、他の提案があるかどうか疑問に思っていましたか?

アップデート:

だから私は自分の単体テストに鼻を使っていて、次のことを試しました:

しかし、私が実行すると:

ノーズテスト test_peek_a_boo.py

プロセスがハングします。私が実行した場合:

ノーズテスト test_peek_a_boo.py -s

プロセスがインタラクティブ シェルに落ちていることがわかります。

更新 2:

テスト クラスの test_method 内に peek_a_boo をインポートすることで、上記のテストを実行することができました。

埋め込むこのテストは実際に呼び出されましたが、a と b の両方が activate メソッドのローカル スコープに含まれていることをテストできるようにしたいと考えています。

0 投票する
2 に答える
108981 参照

python - インポートされたモジュールからの Python の関数のモック

@patchインポートされたモジュールから機能する方法を理解したいです。

これが私がこれまでのところです。

アプリ/mocking.py:

アプリ/my_module/__init__.py:

テスト/モック-test.py:

これは私が期待するようには機能しませ。「パッチを適用した」モジュールは、単純に のモックされていない値を返しますget_user_name。テスト中の名前空間にインポートしている他のパッケージからメソッドをモックするにはどうすればよいですか?

0 投票する
3 に答える
101142 参照

python - Pythonモックのモック属性?

私はmockPythonで使用するのにかなり苦労しています:

テストは実際には正しい値を返しますが、これr.okはモック オブジェクトであり、 ではありませんTruemockPython のライブラリで属性をどのようにモックしますか?