問題タブ [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.
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?
python - Python "Mock" オブジェクトにインスタンス メソッドを追加できますか?
mock.Mock()
オブジェクトを作成しsession
、インスタンス メソッドのように機能するメソッドを追加して、モック オブジェクトへの参照を渡し、self
メソッドが状態をモック オブジェクトに追加できるようにしたいと考えています。types.MethodType
これは可能ですか (たとえば、モックの組み込み API を使用して手動で使用せずに)、またはそれを回避する方法を見つける必要がありますか?
これはRuby用で、同じではないにしても、似たようなものをカバーしているようです。残念ながら、私は Ruby についてよく知りません。
python - 1 つの Django アプリでデコレーターをモックする
テストしたい
- ビュー デコレータが適切に機能する場合
- 適切なビューが呼び出された場合
したがって、ここにデコレータget_object
とビューfeatures
がありmyapp.views
ます。
私はこれを嘲笑してみます:
モック オブジェクトが呼び出されていないかのように、これは何も表示しません。
装飾されたビューを適切にモックするにはどうすればよいですか?
python - djangoテストでフォームにパッチを当てる(モックする)フォーム
mock.patch でフォームをモックしようとしましたが、できません。私はこのコードを持っています
フォーム.py
ビュー.py:
このビューを個別にテストしたいと思います。私は mock.patch でフォームにパッチを当てようとしましたが、そのようなものを書きました:
tests.py:
解決策をグーグルで検索しようとしましたが、何も見つかりませんでした
回答済み: @dstanek に感謝します。良い答えとコードの良いサンプル
django - Django のクラスベースのビューで関数をモックする
作業中の API に Django REST Framework を使用しています。いくつかの理由から、クラスベースのビューを使用したいと考えています。ただし、私は単体テストに少しこだわりがあり、単体テストがデータベースに触れることは決して許しません。注: 私は常に、Carl Meyer が Pycon 2012 で示した「トリック」を使用します。そこで彼は Cursor ラッパーをモックアウトします。
スライドに興味がある場合は、ここにリンクがあります。
ビューの 1 つに、データベース内の何かをチェックするメソッドがあります。DRY であるためには、POST と PUT の間で共有されます。しかし、単体テストのためにそれをモックするのに問題があります。これは、クラスメソッド as_view が新しいインスタンスとクラスのディスパッチを作成し、ディスパッチが返す「ハンドラ」関数を返すためです。そのため、クラスベースのビューで共有メソッドを取得してモックすることができないようです。
クラス ベースのビューで使用されるモデルをモック アウトすることはできますが、「DRY」であるという目標を本質的に破り、POST と PUT の両方でコードをコピーする必要があります。コードをリファクタリングして、ロジックをモデルに移動できると思います。しかし、私はそれをやりたいとは思っていません。
クラスベースのビューの共有メソッドをモックアウトして、実際にデータベースに触れないようにするにはどうすればよいでしょうか? それらを避けるだけですか?
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 メソッドのローカル スコープに含まれていることをテストできるようにしたいと考えています。
python - インポートされたモジュールからの Python の関数のモック
@patch
インポートされたモジュールから機能する方法を理解したいです。
これが私がこれまでのところです。
アプリ/mocking.py:
アプリ/my_module/__init__.py:
テスト/モック-test.py:
これは私が期待するようには機能しません。「パッチを適用した」モジュールは、単純に のモックされていない値を返しますget_user_name
。テスト中の名前空間にインポートしている他のパッケージからメソッドをモックするにはどうすればよいですか?
python - Pythonモックのモック属性?
私はmock
Pythonで使用するのにかなり苦労しています:
テストは実際には正しい値を返しますが、これr.ok
はモック オブジェクトであり、 ではありませんTrue
。mock
Python のライブラリで属性をどのようにモックしますか?