問題タブ [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.
python - Python で連鎖呼び出しをモックする
ライブラリを使用unittest
して次のクラスをテストしようとしています。mock
のインスタンスを作成するときに、インスタンスConnection
の戻り値に応じて、が期待する値であるかどうかをどのようにテストできますか?Session
self.some_info
モックライブラリを利用したい そのドキュメントには、連鎖呼び出しをモックする例があります ( http://www.voidspace.org.uk/python/mock/examples.html#mocking-chained-calls )が、どのようにできるかはあまり明確ではありません私の問題に合わせてください。
このSession.load(cookie)
メソッドは、インスタンスにいくつかの属性を設定しSession
ます。Cookie のすべての値に対して、この値をテスト用に固定したいと思います。
python - ログ メッセージと unittests と呼ばれるメソッドを確認するにはどうすればよいですか?
私は Django 1.3 を使用しており、ロギング システムで出力と対話の数を確認する必要があります。ロギングには Django-Sentry を使用していますが、通常の Python ロガーと同じように機能しているようです。
私はモックに python-mockito を使用しています。可能であれば、さまざまなメソッドが呼び出された回数とそれらが返すメッセージを確認したいと思います。
私は次のようなチェックを達成しようとしています:
また、パラメーターを確認できると便利です。
models.py
:
tests.py
:
出力をキャッチする方法について何か提案はありますか?
python - メソッドが複数回呼び出される Python Mock オブジェクト
別のクラス (CUT の init メソッドに渡されるインスタンス) に依存するクラスをテストしています。Python Mock ライブラリを使用して、このクラスをモックアウトしたいと考えています。
私が持っているのは次のようなものです:
これは問題ありませんが、「methodfromdepclass」はパラメーター化されたメソッドであるため、methodfromdepclass に渡される引数に応じて異なる値を返す単一のモック オブジェクトを作成したいと考えています。
このパラメーター化された動作が必要な理由は、異なる値 (mockobj から返される値によって生成される値) を含む ClassUnderTest の複数のインスタンスを作成したいからです。
ちょっと私が考えていること(これはもちろんうまくいきません):
この「ifcallwith」のようなセマンティクスを実現するにはどうすればよいですか?
python - モックされた file.read() の実際の戻り値を取得する
私はpython-mockを使用して、ファイルを開く呼び出しをモックしています。この方法で偽のデータを渡すことができるようにしたいので、read()
テストでファイルシステムにヒットすることなく、テストデータを使用するだけでなく、それが呼び出されていることを確認できます。
ここに私がこれまでに持っているものがあります:
これの出力は、私が想定しているようなものではあり<mock.Mock object at 0x8f4aaec>
ません。'test'
このモックを作成する際に何が間違っていますか?
編集:
次のようになります。
この:
異なるオブジェクトです。モックをコンテキスト マネージャーとして使用すると、 newMock
が返されますが、それを直接呼び出すと、 で定義したものが返されmock_open.return_value
ます。何か案は?
python - テスト中のモジュールにインポートされるモック メソッド
このモジュールをテストしたいとします。
このメソッドは、システム コール (特定のネットワーク インターフェイスを想定) を行うため、環境に依存しているため、テスト マシンで呼び出すことはできません。
ib_output の処理が期待どおりに機能するかどうかをチェックする、そのメソッドの単体テストを書きたいと思います。したがって、モックosutils.call
を作成して、テストデータを返すだけにします。それを行うための好ましい方法は何ですか?モッキングや (モンキー) パッチを適用する必要がありますか?
テスト例:
python - Mockフレームワークを使用して、モックされたメソッドの出力をどのように変更しますか?
私は次のようなモジュールを持っています:
セッションとは、DBと通信するSQLAlchemyセッションハンドラーを指します。テストの目的で、Sessionオブジェクト(または単にSessionオブジェクト?)のクエリメソッドをモックできる必要がありinit_system
ます。これにより、実際にデータベースと対話せずにテストできます。これを行うためにMockフレームワークを使用するにはどうすればよいですか?
本当に私を困惑させるのは、メソッドをモックした場合、query()
渡されるクラスに依存するすべてのメソッドの出力を変更するにはどうすればよいですquery()
か?
私は私が次の線に沿って何かをすることができることを望んでいます:
ただし、正しくmy_mock_object
模倣するために何をする必要があるのかわかりません。イテレータを返すメソッドquery()
を実装する必要があると思います。all()
そして、返されたイテレータに入れるモックオブジェクトをさらに作成して、適切な属性の値があることを確認できることを知っています。例:
そしてもちろん、MagicMock
init_system関数で使用できるオブジェクトのさまざまなバージョンの反復可能オブジェクトを作成できます(例:for value in var_one
行内)。
しかし、モックされたすべてのオブジェクトをつなぎ合わせる方法がわからないのでSession.query
、クラスが渡されることを考慮してメソッドをモックアウトすることができます。これは、返される反復可能オブジェクトの内容に影響します。
ありがとう!
python - Python クラスにモック パッチを適用し、インスタンス化ごとに新しいモック オブジェクトを取得するにはどうすればよいですか?
OK、これはマニュアルに記載されており、おそらくand/orと関係がある
ことは知っていますが、単純で直接的な例が非常に役立ちます。 side_effect
return_value
私は持っている:
UUT
ここで、クラスの単体テストを行い、 ClassToPatch
. クラスUUT
が正確に 2 つのClassToPatch
オブジェクトをインスタンス化することがわかっているので、インスタンス化ごとに Mock フレームワークが新しい Mock オブジェクトを返すようにして、後でそれぞれの呼び出しを個別にアサートできるようにします。
@patch
テストケースでデコレータを使用してこれを達成するにはどうすればよいですか? つまり、次のコード サンプルを修正するにはどうすればよいでしょうか。
python - メソッドでPythonビルドをモックする方法
私はpythonメソッドで次のことを行います:
- os.listdir(/test) を使用して、ディレクトリの下にあるファイルを一覧表示します
- 正規表現は、ディレクトリの下のファイルのいくつかに一致し、ファイルをリストに入れます
- リスト内のファイルからコンテンツを読み取り、いくつかの集計を行います。
明らかに、私のケースでテストする興味深い部分は 2 と 3 だけなので、1 は間違いなくモックしたいものです。setUp()とtearDown()で/testフォルダの下にパッチファイルの作成/削除を始めました。しかし、同僚は、I/O をまとめて行うのは得策ではないと私に言いました。
私のユニットで os.listdir() でビルドをモックする最良の方法は何ですか? または代替手段は何ですか?
次のようなことを達成するためにできることはありますか:
python - モック ライブラリを使用して Python クラスにパッチを適用する方法
テスト用のクラスにパッチを適用するのに問題があります。Scrapy に属するもの ( HtmlXpathSelectorクラス) にパッチを適用しようとしています。
ここにいくつかのコードがあります:
結果は次のとおりです。
この例は、モック ライブラリ チュートリアルのものとほぼ同じです。なぜそれが機能しないのですか?