問題タブ [pytest-django]
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 - カスタム名のみを使用した動的 pytest メソッドの生成
こんにちは、pytest doc に記載されている次の例を試しています。
py.test -v を使用して実行すると、以下のような出力が得られます。
ここで、HTML レポートを生成すると、非常に長い入力データを使用すると、名前が長すぎます。
上記の例では、最初の結果を取得しないように、メソッドの名前は [3+5-8] です。つまり、タプル (3+5,8) を取得し、実際のテスト ケース メソッド名に追加します。
私の場合、タプルは (3+5,8) ではなく ("短い名前", "非常に長い文字列") であるため、HTML レポートでは非常に長く表示されます。2番目の値ではなく、「短い名前」のみを表示することは可能ですか?
django - Django テストでデータベース設定をオーバーライドするには?
私はDjango 1.8(pytestを使用)を使用しており、次の構成を持っています:
- およびによって管理されるデータベース
defaultで、読み取り操作か書き込み操作かに応じて、DB 呼び出しをいずれかの接続に転送します。readonlyMasterSlaveRouter - 私の開発環境では、
settings.DATABASESディクショナリの両方のエントリが同じ設定になっています (異なる接続を使用しているだけですが、データベースは同じです)。 defaultただし、私のテスト環境にはデータベースしかありません。- モデルが保存さ
post_saveれるたびにシグナルが発生します。Foo - インスタンス
@transaction.atomicを変更して 2 回呼び出すアトミック操作 ( で装飾) があります。デコレータにはカスタムパラメータが渡されないため、トランザクションはデータベース上でのみアクティブになります。Foo.save()usingdefault
post_saveコールバックは を指すBarレコードを作成しますが、これを含むレコードが既に存在するかどうかを確認した後でのみです( を避けるため)。このチェックは、次のクエリを実行することによって行われます。OneToOneFieldFooBarfoo_idIntegrityError
post_saveこれは、コールバックが初めて呼び出されたときに問題ありません。Barレコードが作成され、すべて正常に動作します。ただし、2 回目は、そのようなBarインスタンスが前回のFoo保存で作成されたばかりであっても、フィルタリングは読み取り操作であるため、readonly接続を使用して実行already_existsされ、結果として値が含まれてしまいFalse、新しいレコードの作成がトリガーされます。これは最終的に IntegrityError をスローします。これは、作成操作がdefault接続で実行されると、そのfoo_id.
DATABASESディクショナリを dev_settings から test_settings にコピーしようとしましたが、これにより多くのテストが失敗しました。次に、デコレータについて読んoverride_settingsで、自分の状況にぴったりだと思いました。しかし、驚いたことに、うまくいきませんでした。ある時点で、アプリケーションが開始されると、DATABASES辞書 ( defaulttest_settings からのみのもの) がキャッシュされ、変更setting.DATABASESしても新しい値にアクセスできなくなります。
特定のテストのデータベース構成を適切にオーバーライドするにはどうすればよいですか?
django - ローカル マシンで vagrant から webdriver を実行する
「ubuntu/trusty64」ボックスを使用して、Windowsマシンでvagrantを実行しています。Vagrant で Selenium テストを実行しています (django で pytest-selenium を使用) ローカル マシン (Windows) firefox/chrome で webdriver が動作するように設定するにはどうすればよいですか?
vagrant マシンからローカル ブラウザをトリガーすることはできましたか? Xサーバーが必要でしたか?
python - pytest例外なし型オブジェクトは呼び出し可能ではありません
私はtest1.py以下のコードを持っています
そして、conftest.py私は持っています
実行すると、ブラウザが起動して閉じます。
しかし、私もエラーが発生しますself = <CallInfo when='teardown' exception: 'NoneType' object is not callable>, func = <function <lambda> at 0x104580488>, when = 'teardown'
また、両方のテストを実行test_1しtest_2、同じドライバー オブジェクトを使用する場合は、スコープmoduleまたはsession?を使用する必要があります。
python - pytestスコープ関数がブラウザの2つのインスタンスを作成しない
xdistその前に、各テストを独立させようとする前に、2つのテストを並行して実行しようとしています。
ここでブラウザを設定します。
そして、ここに私が実行している2つのテストがあります
しかし、テストを実行すると、
ご覧のとおり、同じブラウザ インスタンスを使用しています。2つのブラウザインスタンスを作成するscopeように設定すると思いましたか?function
上記が機能する場合、最終目標は、おそらく使用するようにテストを並行して実行することpy.test -d --tx 3*popen//python=python2.7 test.py -sです? したがって、同時に 2 つのブラウザが起動します。