問題タブ [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.

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

python - カスタム名のみを使用した動的 pytest メソッドの生成

こんにちは、pytest doc に記載されている次の例を試しています。

py.test -v を使用して実行すると、以下のような出力が得られます。

ここで、HTML レポートを生成すると、非常に長い入力データを使用すると、名前が長すぎます。

上記の例では、最初の結果を取得しないように、メソッドの名前は [3+5-8] です。つまり、タプル (3+5,8) を取得し、実際のテスト ケース メソッド名に追加します。

私の場合、タプルは (3+5,8) ではなく ("短い名前", "非常に長い文字列") であるため、HTML レポートでは非常に長く表示されます。2番目の値ではなく、「短い名前」のみを表示することは可能ですか?

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

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しても新しい値にアクセスできなくなります。

特定のテストのデータベース構成を適切にオーバーライドするにはどうすればよいですか?

0 投票する
0 に答える
214 参照

django - ローカル マシンで vagrant から webdriver を実行する

「ubuntu/trusty64」ボックスを使用して、Windowsマシンでvagrantを実行しています。Vagrant で Selenium テストを実行しています (django で pytest-selenium を使用) ローカル マシン (Windows) firefox/chrome で webdriver が動作するように設定するにはどうすればよいですか?

vagrant マシンからローカル ブラウザをトリガーすることはできましたか? Xサーバーが必要でしたか?

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

python - pytest例外なし型オブジェクトは呼び出し可能ではありません

私はtest1.py以下のコードを持っています

そして、conftest.py私は持っています

実行すると、ブラウザが起動して閉じます。

しかし、私もエラーが発生しますself = <CallInfo when='teardown' exception: 'NoneType' object is not callable>, func = <function <lambda> at 0x104580488>, when = 'teardown'

また、両方のテストを実行test_1test_2、同じドライバー オブジェクトを使用する場合は、スコープmoduleまたはsession?を使用する必要があります。

0 投票する
0 に答える
277 参照

python - pytestスコープ関数がブラウザの2つのインスタンスを作成しない

xdistその前に、各テストを独立させようとする前に、2つのテストを並行して実行しようとしています。

ここでブラウザを設定します。

そして、ここに私が実行している2つのテストがあります

しかし、テストを実行すると、

ご覧のとおり、同じブラウザ インスタンスを使用しています。2つのブラウザインスタンスを作成するscopeように設定すると思いましたか?function

上記が機能する場合、最終目標は、おそらく使用するようにテストを並行して実行することpy.test -d --tx 3*popen//python=python2.7 test.py -sです? したがって、同時に 2 つのブラウザが起動します。