問題タブ [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 呼び出しをいずれかの接続に転送します。readonly
MasterSlaveRouter
- 私の開発環境では、
settings.DATABASES
ディクショナリの両方のエントリが同じ設定になっています (異なる接続を使用しているだけですが、データベースは同じです)。 default
ただし、私のテスト環境にはデータベースしかありません。- モデルが保存さ
post_save
れるたびにシグナルが発生します。Foo
- インスタンス
@transaction.atomic
を変更して 2 回呼び出すアトミック操作 ( で装飾) があります。デコレータにはカスタムパラメータが渡されないため、トランザクションはデータベース上でのみアクティブになります。Foo
.save()
using
default
post_save
コールバックは を指すBar
レコードを作成しますが、これを含むレコードが既に存在するかどうかを確認した後でのみです( を避けるため)。このチェックは、次のクエリを実行することによって行われます。OneToOneField
Foo
Bar
foo_id
IntegrityError
post_save
これは、コールバックが初めて呼び出されたときに問題ありません。Bar
レコードが作成され、すべて正常に動作します。ただし、2 回目は、そのようなBar
インスタンスが前回のFoo
保存で作成されたばかりであっても、フィルタリングは読み取り操作であるため、readonly
接続を使用して実行already_exists
され、結果として値が含まれてしまいFalse
、新しいレコードの作成がトリガーされます。これは最終的に IntegrityError をスローします。これは、作成操作がdefault
接続で実行されると、そのfoo_id
.
DATABASES
ディクショナリを dev_settings から test_settings にコピーしようとしましたが、これにより多くのテストが失敗しました。次に、デコレータについて読んoverride_settings
で、自分の状況にぴったりだと思いました。しかし、驚いたことに、うまくいきませんでした。ある時点で、アプリケーションが開始されると、DATABASES
辞書 ( default
test_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 つのブラウザが起動します。