問題タブ [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 テスト - 初期値を取得してフィードバックする
私は、ForeignKeys オブジェクトと ManyToMany オブジェクトの両方を参照する基本モデルを持っています。ビューのIDを取得して変更を加える「編集」テストで、問題が発生しました。他の誰かがよりクリーンな回避策を見つけたかどうかに興味があります。この投稿を見つけて、正しい道を歩み始めました
しかし、これはできません。FK または M2M を使用している場合は、最初にこの醜さを実行する必要があります...
他の誰かがこれに遭遇しましたか、またはこれに対処するより良い方法はありますか?
python - Django 単体テストで Django メッセージ フレームワークのコンテンツにアクセスする方法
Django メッセージ フレームワークを使用して、メッセージをテンプレートに渡して、さまざまなシナリオ (ユーザー アカウントの作成が成功した場合など) でレンダリングします。メッセージは、セッションの Cookie 内に保存されます。
クッキーはMorselオブジェクトですが、メッセージの内容をテストするためにその構成部分を引き出すことができないようです。どんな助けでも大歓迎です!
django - django_webtest ケースで @login_required URL にリダイレクトできない
アプリケーションをテストするためにdjango_webtestを使用しています。サインアップ ページをテストしようとすると、問題が発生しました。このページは、ユーザーの作成などの初期アクションを実行し、新しく作成されたユーザーを認証して、GET リクエストの次のパラメーターで指定されたページにリダイレクトする必要があります。
ビューメソッドのコードは次のとおりです。
ユーザーが example.com/sign_up/?next=/settings/ をブラウザに入力したときの動作をテストし、フォームのすべてのフィールドに正しく入力して送信します。
/settings/ を処理するビューにはデコレータ @login_required がありますが、ユーザーが正常にサインアップした後、認証される必要があるため、送信後にユーザーが example.com/settings/ に移動すると予想されます (手動でテストすると、彼は移動します) .
しかし、テストを実行すると:
「AssertionError: リダイレクト ページ '/settings/' を取得できませんでした: 応答コードは 302 (予期される 200) でした」を返します。デバッグしたところ、*submit_response* が実際にはロケーション パス /settings/ の 302 FOUND であることがわかりました。しかし、メソッドassertRedirectsがターゲット ページを取得しようとすると、再びリダイレクトに直面します - example.com/settings/ は example.com/login/?next=/settings/ にリダイレクトされます。したがって、ユーザーは送信後にログインしません。
OK、テストクライアントのログイン方法で彼にログインしようとしました:
しかし、それでも同じです。どうやら、この方法はうまくいきません:
版画
テストケースでログイン機能が機能しない理由と、リダイレクトする前にユーザーをログインする方法を理解するのを手伝ってください.
ありがとう!
django - django_webtestでのユーザー認証
テンプレートに次のコードがあります。
ご覧のとおり、ログインしているかどうかによって異なるリンクが表示されます。手でテストすれば問題なく動作しますが、次のコードでテストしようとすると、次のようになります。
login()はTrueを返しますが、テストは失敗します。ホームオブジェクトに対してshowbrowser()を呼び出したところ、返されたページは匿名ユーザーのページのように見えます。設定とログアウトへのリンクに加えて、サインアップとログインへのリンクが含まれています。
テンプレートで*request.user.is_authenticated*を使用して、ユーザーが認証されているかどうかを確認するのは正しいですか?テンプレートが、ユーザーがテストからサインアップしたことを認識しないのはなぜですか?
ありがとう!
python - Django テスト: 一時データベース ファイルにデータがありません
で次のように設定された sqlite3 データベースを使用していますsettings.py
。
以下で開始されたテスト実行中:
path/to/test-config.sqlite
これにより、必要なフィクスチャをロードした別のアプリケーションで必要なデータベース ファイルが一時的に作成されます。
ただし、データベースファイルは空です。これは、あるテストで一時停止中にアサートしました。
sqlite ファイルを必要とせず、メモリ内データベースで十分なその他のテスト ケースでは、エラーは発生しません。
私の質問:
- とにかくそれを作成する場合、なぜdjangoはそのデータをデータベースファイルにフラッシュしないのですか? と
- データを一時データベースファイルにダンプする必要があるため、djangoにそれを実行させるにはどうすればよいですか?
編集
興味があれば、私はDjango 1.3.1を使用しています。
EDIT2
私はフィクスチャに精通しており、それらを使用してデータベースにデータを入力していますが、私の問題は、テスト中にフィクスチャからのデータがデータベース ファイルに書き込まれないことです。その事実について十分に明確でなかったら申し訳ありません。
EDIT3
私の質問には明確な説明が必要なので、次のテスト設定を検討してください(これは私が実際に行っていることに近いものです):
メソッドがtestSomething
ブレークポイントに達すると、プログラムを起動し、sqlite3
Django によって作成された一時データベース ファイルに接続します。フィクスチャはロードされます (他のテストも同様に機能するため、私は知っています) が、データは一時データベース ファイルに書き込まれません。
django - Djangoテストランナーと認証バックエンドを使用したテストクライアントログインの問題
シェルを使用して、これを行うことができます:
これをtest.pyファイルに追加します。
私はこの出力を取得します:
私はインターネット全体を見てきましたが、この状況に役立つものは何も見つかりません。何か案は?
同様のメモで、私はコメントアウトしました: djangoを実行するたびに文句を言うので、コードからfrom django.views.decorators.debug import sensitive_post_parameters
すべてのデコレータ:
このデコレータとインポートステートメントを削除すると、前に進むことができます。@sensitive_post_parameters()
./manage.py test app
Could not import app.views. Error was: No module named debug
私は非常に失われました、そして私はStackOverflowが必要です!みんな、ありがとう。
python - python / django unittest.TestCaseの失敗したテストメソッドの詳細にカスタム/デバッグメッセージを追加する方法はありますか?
unittest.TestCaseを使用して、djangoアプリのテストケースを作成しています(これは、基本的にPythonのunittest.TestCaseと同じです)。テストメソッドが失敗するたびに、以下の形式で説明が表示されます。失敗したテストメソッドの出力にカスタム/デバッグメッセージを追加する方法はありますか?
python - django モデルのテスト ケースの作成
現在のプロジェクトの途中で、数え切れないほどの時間をデバッグに費やすという苦痛に苦しんだ後、TDD を採用することにしました。まず、既存のモデルごとに一連の単体テストを作成する予定です。しかし、属性のみが定義されている (つまり、追加のメソッド/プロパティがない) モデルの場合、何をどのようにテストする必要があるのか わかりません。
例として製品を使用すると、単体テストでカバーする必要があるものは何ですか? また、ForeignKeyとManyToManyFieldをどのようにカバーする必要がありますか?
django - pdbのdjangoユニットテストエラーの検査
例外をスローする単体テストがあります。例外は私のコードではスローされません。それはdjangoの奥深くからのものです。その場所でpdbセッションを開いて、何が起こるかを確認したいのですが、pdbでipythonを開いrun test myapp
てテストを実行すると、例外がスローされて出力されますが、pdbは何もキャッチしません。
絶望的な解決策は、djangoのソースを開いてimport pdb; pdb.set_trace()
、調査したい場所に挿入することだと思います。しかし、もっと良い方法が必要です。私は何が欠けていますか?
django - Django テストでユーザーを取得するにはどうすればよいですか?
私はいくつかの外部サービスを持っています。私の Django アプリは、外部サービス API の上に構築されています。外部サービスと通信するには、認証 Cookie を渡す必要があります。これは、読み取りによって取得できますUser
(その Cookie != django Cookie)。
のようなテスト ツールを使用するwebtests
と、requests
テストを書くのに苦労します。
たとえば、外部サービスでユーザーを作成するフォームを送信する必要があります。しかし、それを行うには、通常はパスインしますrequest.user
(外部サービスに対する権限を認証するため)。しかし、私は持っていませんrequest.user
。
この種のものにはどのようなオプションがありますか?
ありがとう...
これが私のtests.pyだとします
私は得る
しかし、私がビューでテストすればUser.objects
、私は大丈夫です。