問題タブ [django-testing]
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.
django - Django単体テストはデータベースライブラリのコードでセットアップに失敗しますか?
次の点を考慮してください。
これを見ると、Django の ORM が間違った SQL を生成しているというエラーが報告されているようです。これがテストを実行することさえ妨げていることを考えると、ここからどこに行くべきですか?
編集:実行パスが移行を通過しているようです。これはその移行のコードです:
関連する場合に備えて、私は南を使用しています。
これは本当に Django コンポーネントのバグですか、それとも私のコードのどこかに起因するのでしょうか? それが私のコードなら、どこを探せばよいでしょうか? また、何を探せばよいでしょうか?
django - Djangoプロファイルアプリでビューをテストするためのベストプラクティスは?
Djangoプロファイルアプリでビューのテストをいくつか書きたいです。
ビューには、いくつかのスマートなエラー処理ロジックがあります。たとえば、プロファイルを作成しようとしたが、プロファイルがすでに存在する場合は、既存のプロファイルページ(またはプロファイルの編集ページ)にリダイレクトするだけです。
このエラー処理が希望どおりに機能することをテストするにはどうすればよいですか?ベストプラクティスは何ですか?
1つのアイデアは、Zombie.jsを使用してBDDを実行し、タイトルが「プロファイルの作成」ではないページが表示されることをテストすることです(または、タイトルが「プロファイルの編集」であるページが表示されることを確認することもできます)。しかし、Djangoのテストドキュメントには次のように書かれています。
- Djangoのテストクライアントを使用して、正しいビューが呼び出されていること、およびビューが正しいコンテキストデータを収集していることを確認します。
- TwillやSeleniumなどのブラウザ内フレームワークを使用して、レンダリングされたHTMLとWebページの動作(JavaScript機能)をテストします。
ただし、Djangoテストクライアントを使用する場合は、次のことができます。
- URLでGETおよびPOSTリクエストをシミュレートし、応答を観察します。低レベルのHTTP(結果ヘッダーとステータスコード)からページコンテンツまですべてです。
- 指定されたURLに対して正しいビューが実行されることをテストします。
- 特定の値を含むテンプレートコンテキストを使用して、特定のリクエストが特定のDjangoテンプレートによってレンダリングされることをテストします。
テストクライアントを使用してから、ページのコンテンツを確認する必要がありますか?どのテンプレートがレンダリングされたかを確認する必要がありますか?このビューをテストする適切な方法は何ですか?
django - Django テストクライアントの応答にはテンプレートの空のリストが含まれていますか?
Django のテスト ドキュメントによると、Django クライアントの Response オブジェクトには、次のような「テンプレート」が含まれています。テンプレートがファイルからロードされた場合、テンプレートのファイル名を取得するための名前 (名前は「admin/index.html」などの文字列です)"
ただし、テンプレートがレンダリングされたと確信しているにもかかわらず、テンプレートの空のリストを取得しています。
テンプレートが空なのはなぜですか? レンダリングされたテンプレートを確認するにはどうすればよいですか?
django - Django テスト フィクスチャとコンテンツ タイプ
モデルでdjangoのContentType外部キーを使用しており、単体テストのフィクスチャで使用しています。
したがって、フィクスチャにcontent_type_idをハードコーディングする必要がありますが、django がそれを別の値に初期化することがあるため、テストが失敗します。
モデルのcontent_type_idを安全に予測する方法、またはそのような状況を処理する他の適切な方法はありますか?
python - Djangoのテストプットメソッド
DjangoアプリでPUTメソッドをテストしています。しかし、私が電話するとき:
私のテストでは、私の見解で次のエラーが発生します。
このエラーをスローしている行は次のとおりです。
では、putリクエストで送信した実際のペイロード(FakePayloadオブジェクトではない)が、ビューでテストしようとしているコードに到達することを確認するにはどうすればよいですか?
django - DatabaseError を検出するテストケース: そのような列はありません
最近、モデルの 1 つに新しいフィールドを追加しましたが、データベースのテーブルに適切な列を追加するのを忘れていました。このモデルの新しいインスタンスの追加と既存のインスタンスの変更をテストするテスト ケースがあります。これらのテスト ケースはどちらも失敗しませんでした。しかし、ライブサイトでインスタンスを変更しようとすると、
DatabaseError そのような列はありません
TestCase 内からこのエラーを検出しようと試みましたが、そのような運はありませんでした。
どんな助けでも大歓迎です。
django - Djangoテスト:フィクスチャデータのみでIntegrityErrorsのないデータベースを取得する方法(エラーの原因を診断することにより)?
フィクスチャデータを使用してテストを実行しようとしていますが、悪名高いIntegrityError: column user_id is not unique
エラーが発生します。
ここで、フィクスチャを見ると、フィクスチャ内のユーザーモデルのIDが互いに一意であることがわかります。衝突は(非テスト)データベースの既存のデータとの衝突であると推測します。これは正しいです?(編集:これは正しくないようです-以下を参照してください)
テストで利用できるデータを正確に制御できるようにしたいと考えています。djangoテストランナーがライブデータベースからデータとフィクスチャデータをロードしないようにする方法はありますか?(編集:はい-Thibautの回答を参照してください)。
編集: Thibautの回答に従って、メモリ内のクリーンなデータベースを使用するように切り替えても、問題は解決しません。したがって、既存の開発データベースは問題ではないと推測します。
したがって、3番目の質問があります。テスト中にフィクスチャをロードするときにIntegrityErrorの原因を診断するにはどうすればよいですか?(そして、どうすれば修正できますか?)
編集2:私の問題の解決策は、クリーンなデータベース(Thibault Jによる)から始めることに加えて、エラーが発生しなくなるまで、ユーザーを参照するインストール済みアプリからモデルを削除することでもありました。
DrTyrsaの他の提案(データを見る以外)は、自然キーを使用することでした。これは、ユーザーにとって、ある程度のモンキーパッチやその他のハッカーが必要だったことは間違いありません(ユーザーのコードを編集しますか?)。
django - Django 1.3 で ImageFields を使用してモデルをテストするときに、残りの画像ファイルを防止する
Django 1.3FileField
では、インスタンスが削除されたときに実際のファイルが残るように、モデルの動作が s で変更されました。ほとんどの場合、これで問題ありません。ImageField
しかし、私はsを多用するアプリケーションをテストしており、開発用アップロード ディレクトリに何百もの無駄な画像が残っています。開発なので大したことではありませんが、テストで後片付けをしたいと思います。
テスト時にこれらの画像がぶら下がらないようにする最善の方法は何ですか? delete
オーバーライドなどを使用して、この動作を全面的に変更したくないため、その部分を強調します。
python - Djangoテスト用のメモリ内イメージを生成する
テスト目的でメモリ内イメージを生成することは可能ですか?
これが私の現在のコードです:
django - テストにメインのurls.pyを使用せずにインストールされたDjangoアプリ(登録)
これがdjango-registrationのバグなのか、それとも私がしていることなのかはわかりません。
最小限のプロジェクトがあり、django-registrationがインストールされており、独自のアプリはありません。Django-登録にはいくつかのテンプレートが必要なので、私はそれらをに持っていますtemplates/registration
。各テンプレートには、テンプレートタグがあります。{% url index %}
これは私のに含まれていurls.py
ます。
実行する./manage.py test registration --failfast
と、次のようになります。
私自身のテンプレートにURLエントリが表示されません。
Djangoの逆関数をデバッグしましたが、urls.py
まったく使用されていないようです。代わりregistration.tests.urls.py
に使用されます。
これは意図された動作ですか?基本的なテストに合格することができないので、私は望んでいません。これを回避するにはどうすればよいですか?