問題タブ [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: conftest.py の代わりにテスト ファイルにフィクスチャを追加する
私はPythonが初めてで、pytestに疑問があります
test_client.py
conftest.py
conftest.pyで定義されたフィクスチャを test_client.py に移動して、conftest.pyを削除することは可能ですか?
django - Pytest テストは、ネットワーク呼び出しを行うテストはありませんが、インターネットがないと非常に遅くなります
Django プロジェクトの pytest で奇妙な問題が発生しています。
単一の空の単体テストを実行すると、
データベースを再利用すると平均 7 秒かかり、平均で 3 秒かかります。
Wi-Fi をオフにすると、平均で 20 秒かかります。
Wi-Fi をオンにしてネットワークを無効にすると、平均で 150 秒以上かかります。
私の他のチーム メンバーにとって、上記のケースでは時間に違いはありません。さまざまなネットワーク監視ツールを使用して確認しましたが、ネットワーク アクティビティも発生していません。
python - pytest が REST フレームワークとやり取りしているときに、PATCH と PUT が期待どおりに機能しない
django REST フレームワークを使用して API を構築しています。
この API をテストするために、pytest とテスト クライアントを次のように使用しています。
また
どちらも、REST フレームワークの一般的な GET、POST、および DELETE クラスを使用する場合に機能します (DestroyAPIView
またはRetrieveUpdateAPIView
単にAPIView
get および post 関数を使用する場合など) 。
問題が発生するのは、PATCH および PUT ビューを使用する場合です。などRetrieveUpdateAPIView
。ここで私は突然使用しなければなりません:
また
いつものようにテスト クライアントを使用しようとすると、エラーが発生します。
client.patch() 呼び出しで「application/json」を指定すると、次のようになります。
誰かが私にこの動作を説明できますか? curl を使用しても同様に機能するため、キャッチするのは特に困難-X PATCH -d"name=123"
です。
django - テスト データベース移行のカスタム オーダー
大規模なアプリケーションで django テストを実行しています。テスト データベースが必要なので、テストを実行する前にテスト データベースを作成する必要があります。しかし、問題は、いくつかの依存関係の問題のため、移行を次の順序で実行する必要があることです: migrate app2、migrate app1、migrate。やり方が間違っていることはわかっていますが、何百もの移行を修正する意志も時間もありません。
質問は: --keep-dbオプションを介して後で使用するために、テストの実行とは別にテスト用のデータベースを作成する方法はありますか? アプリ データベースの作成には、上記の特別なコマンドの順序が必要なため、"test" コマンドを実行してデータベースを準備し、テストを実行することはできません。
python - pytest-django データベースの初期化でデータベースがリロードされないようです
状況を次のように要約しました。
テスト フィクスチャ XXX.json には 1 つのバーが含まれています。最初のテスト (test_t1) は成功します。2 番目のテスト (test_t2) は失敗します。transaction=True 属性では、テスト フィクスチャからのデータでデータベースが再初期化されないようです。
代わりに unittest の TransactionTestCase を使用すると、クラス内のすべてのテスト ケースの前に初期化が行われ、すべてのテストが成功します。
pytest の例で 2 番目のテスト ケースのデータベースが再初期化されない理由について、ご意見をいただければ幸いです。
python - Pytest は AssertionError を書き換えません
pytest-django および pytest-cov プラグインを使用して pytest を使用して Django プロジェクトをテストしていますが、ディレクトリ ( pytest project -vv --cov --ds=proj.tests
) でテストを探すように指示している場合、AssertionError が発生しても書き換えられません。
ただし、上記の場合のpythonファイルを含むディレクトリとは対照的に、単一のtests.pyファイルである別のディレクトリ/ djangoアプリでも常に機能します
また、それが役立つのか、すべてを混乱させるだけなのかはわかりませんが、ファイル ( pytest project/core/tests/pytest.py -vv --cov --ds=proj.tests
) を直接検索すると、期待どおりに機能します。
以前は機能していたのでさらに奇妙で、その構成には一切触れていません (私の同僚もすべて同じです。彼はかなり古いコミットを行っているとされています)。
テストを自動化するために tox を使用しています。
これがpytestセクションです
本来のように機能しなくなったのはなぜですか? とにかくこの問題を解決する方法はありますか? print を使っていた時代には戻りたくない :(
Python 3.5.2、tox 2.4.1、pytest-django 3.0.0 (およびその pytest dep)、および pytest-cov 2.4.0 を使用しています。
python - unittest.installHandler の Pytest サポート
Django プロジェクトのテストを切り替えて、Pytest と pytest-django を使用することを検討しています。私が遭遇した問題は、テストの実行を途中できれいに停止できなくなったことです。
デフォルトの Django テスト ランナーは、これを適切にサポートしています。
テストの実行中に Ctrl-C を押すと、テスト ランナーは現在実行中のテストが完了するのを待ってから正常に終了します。正常な終了時に、テスト ランナーはテストの失敗の詳細を出力し、実行されたテストの数と発生したエラーと失敗の数を報告し、通常どおりテスト データベースを破棄します。したがって、 --failfast オプションを渡すのを忘れた場合、Ctrl-C を押すと非常に便利です。一部のテストが予期せず失敗し、完全なテストの実行が完了するのを待たずに失敗の詳細を取得したい場合に注意してください。
現在実行中のテストが終了するのを待ちたくない場合は、Ctrl-C をもう一度押すと、テストの実行がすぐに停止しますが、正常に停止しません。中断前に実行されたテストの詳細は報告されず、実行によって作成されたテスト データベースは破棄されません。
Pytest または pytest-django でこれに対するサポートはありますか? 掘り下げてみたところ、 を呼び出してからunittest.installHandler()
、何らかの方法で Pytest に実行を停止するように指示する必要があるようです。
Pytest では、Ctrl+を押すと、破棄Cせずにテストがすぐに停止します。呼び出しinstallHandler()
は、実行を停止しないことを意味します。
django - DB 作成後に SQL を実行しますが、移行前に pytest を使用します
一部のモデルが特別なインデックスを使用するdjangoプロジェクトがあります。
このため、db pre-migrations で拡張機能を作成します。テストを実行すると、pytest はテスト データベースを作成し、移行を実行しますが、拡張機能は作成されません。移行内で拡張機能を作成できません。データベースの作成後、移行が実行される前に、テストデータベースに「RunSQL」コマンドを挿入する方法はありますか?
技術的なもの:
- ジャンゴ 1.9.5
- パイテスト
- ポストグル 9.5