問題タブ [django-tests]
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 - インスタンスが存在しないと誤って考えているDjangoテストの異常なエラー
ユーザーがForeignKeyを特定の値に変更できるかどうかを確認するDjangoアプリを非常にカスタマイズしました。
この場合、 aは aUser
に属しWorkgroup
、 anItem
もaWorkgroup
に属することができるため、 aUser
が anを作成するとき、それらは自分が属する s にItem
のみ入れることができます。Workgroup
ややこしいItem
のは親クラスなので「アイテム」の種類が多い。
現在、これを確認するためのカスタム管理フォームのセットアップがあります。
このテストの重要な部分は次のとおりです。
しかし、ときどき (そして断続的に)、テスト スイートを実行すると、post
このフォームでコンテンツの保存をテストすると、次のエラーが発生します。
この性質上、正常に投稿された場合、ページはリダイレクトされます。そうでない場合は、応答 HTML を吐き出すだけのコードがいくつかあります。その場合、次のようになります。
ただし、このエラーが発生した場合、すべての項目タイプがエラーをスローするわけではなく、1 つまたは 2 つのみです。select
しかし、フィールドを見ると、id
(またはpk
)のワークグループ17
が存在します。さらに、テスト スイートを再実行すると問題なく実行されます (「ウォームアップ」が数回行われる場合があります)。また、テスト以外のサイトでこれに遭遇したことはありません。
これは、Django テストがトランザクションに保持される方法が原因であると思いますか? 以前は非常に断続的でしたが、今ではより頻繁になっていますが、それでもランダムであるため、私はこれに悩まされ始めています。
したがって、これはまだ失敗しており、何が修正されていないかを言うことができます:
- インメモリの代わりにファイルベースの SQLite インスタンスを使用する
- テストに PostgreSQL を使用する
- TestCase から TransactionTestCase への切り替え
私が知っていること:
- 開発サーバーではテストは正常に実行されますが、Travis-CI では同じテストが失敗します
- テスト Web クライアントへの呼び出しだけでなく、他のいくつかのクエリセットも機能します
- トランザクションベースかもしれませんが、よくわかりません。
そして、非常に好奇心旺盛な人のために、ここに私が鎮圧しようとしているができない問題があります。
編集: 2015-06-11
失敗する自己完結型の例を作成しました!! SQLite は一貫して機能し、Postgres は一貫して失敗します。
何らかの理由で、このコードは一貫して悪いようです:
実際、管理ビューを呼び出すと、changelist
Workgroup
クエリセットに表示されなくなったため、保存しようとすると、Postgres で後続の管理ページが常に失敗します。さて、それはなぜですか?
完全なコード:
django - Django テスト: --keepdb はテスト中に行われた変更をリセットしますか?
テストに関するDjangoのドキュメントによると、--keepdb
フラグは将来の実行のためにテストデータベースを保持します。
https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-option---keepdb
明確にするために、テストによってデータベースに加えられた変更 (つまり: object.save()
) は自動的にリセットされますか? それとも、これらの変更をテスト内から元に戻す必要がありますか?
python - Django: setUpTestData を DRY に保つ
Django 1.8 の setUpTestData と --keepdb の便利さを本当に楽しんでいます!
ただし、複数のテスト ファイル間でデータの一貫性を保つという問題が発生しています。setUpTestData クラスメソッドを 1 つの場所に配置し、各テスト ファイルがそれを参照できるようにして、個々のテスト ファイルに変更をコピーして貼り付ける必要がないようにしたいと考えています。
これをどのように行うかについて、特に setUpTestData 関数を別のファイルからインポートできないように見えるクラスメソッドに関して、少し混乱しています。誰かが私を助けることができますか?よろしくお願いします!
現在のテスト ファイル
SetupData ファイル
python - Djangoは、応答に可能な文字列のリストの1つが含まれていると主張します
組み込みのテスト ツールを使用して Django アプリのテストを作成しています。現在、ユーザーのフォロワーのリストを表示するページのテストを作成しようとしています。ユーザーにフォロワーがいない場合、ページには文字列のリストからランダムに選択されたメッセージが表示されます。例として:
そこで、応答にこれらの文字列のいずれかが含まれていることをアサートするテストを書きたいと思います。文字列を 1 つしか使用していない場合はそのまま使用できますself.assertContains(request, "You don't have any followers.")
が、複数の結果が考えられるテストを作成する方法に行き詰まっています。どんな助けでも大歓迎です。
python - django rest フレームワークでの再利用可能なアクセス許可のテスト
私は安らかなサービス(DRFを使用)のテストをコーディングしています。アクセス許可のビューが変更されたときに変更する必要のないテストが必要です。
例:
view.py
class List(generics.ListAPIView): permission_classes = (IsAuthenticated, ) queryset = List.objects.all() serializer_class = ListSerializer
/li>test.py
テストを実行する場合
しかしもしpermission_classes = (AllowAny, )
テストを実行
次に、権限が変更されたときにテストを再コーディングする必要はありません。
ありがとう
python - サブディレクトリ内のテスト
Django 1.8 では、次の設定のアプリがあります。
を実行するpython manage.py test -v 2 app
と、次のエラーが表示されます。
どうしてこれなの?
どうすれば修正できますか?