問題タブ [django-unittest]

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.

0 投票する
1 に答える
3835 参照

python - Pythonでの単体テスト中にデコレータをオーバーライドする

私が飾っているdjangoクラスベースのビューがあります。残念ながら、そのデコレーターは、単体テストが行​​うべき範囲外のステータスチェックを行うために外部呼び出しを行うため、単体テスト中に何もしないようにデコレーターをオーバーライドしたいと考えています。ここに私のデコレータがあります:

decorators.py

ビュー.py

tests.py

デコレータをオーバーライドする方法はありますか、それとも完全にバイパスできますか? 私はこれにかなり困惑しています。

編集 krak3nから以下を使用してリクエストをモックアウトしようとしました:

最後の方法は、これまでのところ最も近い方法ですが、スタック トレースをスローすることになります。

0 投票する
2 に答える
6756 参照

python - Django単体テストをデバッグするには?

Django単体テストがあり、デバッグ目的で print ステートメントを入れたいのですが、どうやら django がそれらを抑制しているようです。他にどのように変数の値を出力できますか? 私はアサートなどでハックできるかもしれませんが、人々はどのようにこれを行うのか疑問に思っています.

0 投票する
1 に答える
554 参照

python - Django 単体テスト、不明な列エラー

私は Django の初心者であり、Django の使い方に慣れてきました。また、単体テストの信奉者でもあります。

contractsフィールドを持つサンプル データベース テーブルが与えられた場合

を使用してモデルクラスを定義しましたdjango_admin.py inspectdb > models.py

テストクラス内で、私は定義しました

このテストを実行すると、データベース エラー 1054 が表示されます。「フィールド リストに不明な列 contract.id があります」。それは正確にはどういう意味ですか?スタック トレースの最初のエラーは、最初の保存直後の get 呼び出しです。

つまり、別のモデルオブジェクトに対してまったく同じテストをセットアップし、そのテストに合格しました。

0 投票する
1 に答える
1040 参照

python - 単体テストを使用して Django のパフォーマンスを測定する

単体テストはアプリケーションの機能を測定する優れた方法ですが、予備的なパフォーマンス プロファイリングに単体テストを使用した人はいますか?

私が話しているのは、自動化されたテスト実行の一部としてプロファイリング ツールを実行し、パフォーマンス結果を保存し、それらを任意の値と比較して、ボトルネックが飛び出すようにすることです。たとえば、最近、Django タグ ライブラリによってテンプレートの解析時間が文字通り 10 倍に増加したというケースがありました。テンプレートの解析が単体テストで構築されていれば、はるかに早く表示されるはずです。

この種の測定を標準の Django や Python のセットアップに含めるモジュールはありますか? そうでない場合、私自身の記事を書くための特定の提案や注意事項はありますか? ありがとう!

0 投票する
3 に答える
11363 参照

django - django - HttpRequestオブジェクトに属性「セッション」がありません

セッションが機能していないようです。Django は、HttpRequest オブジェクトには「セッション」と呼ばれる属性がないことを訴えています。ドキュメントには、ミドルウェアが有効になっており、インストールされたアプリで django.contrib.sessions があれば、問題ないと明確に述べられています。単体テストを使用してこのエラーが発生しています。

私のviews.pyで:

取得しようとしているセッション値は、view.py の別の場所にあるフォーム ポスト メソッドで設定しようとしている値です。

また、これらは新しいプロジェクトではデフォルトで有効になっているとも述べています。そこで、新しく新しい django プロジェクトを作成し、コンソールでセッション属性を確認しました。これがまさに私がやったことです:

私は何が欠けていますか??

更新: これは単体テストでテストする場合にのみ発生します。例外を引き起こすテストは次のとおりです。

0 投票する
1 に答える
409 参照

python-2.7 - Django - AdminForm の単体テスト

私は単体テストに非常に慣れておらず、おそらく何か間違ったことをしていますが、投稿をシミュレートして管理バックエンド経由でモデルを更新するとsave_model、AdminForm のメソッドが呼び出されていないようです。このメソッドをテストしようとしています - 何が間違っていますか?

あまり関係のない 2 番目の質問は、一般に、単体テストを使用するときにメソッドが呼び出されていることを確認するにはどうすればよいですか? ヒットしたすべてのメソッドを一覧表示する方法はありますか?

以下は、私のテストが実行されているコードです。このsave_modelモデルの AdminForm のメソッドで、このモデルのfoobar属性を現在サインインしているユーザーのユーザー名に設定しました。以下は私のテストです:

それself.mymodel.foobarは空の文字列であると言うので失敗します。アップデート前はこうあるべきだった。foob​​ar の値は渡されませんself.dictが、私のsave_modelメソッドは、更新が発生したときにそれを独自に設定するように設計されています。また、コードが正しく動作し、正常に動作しているように見えることも注目に値しますがsave_model、テストが失敗しているだけです。私はTDDの完全な初心者なので、問題はコードではなくテストにあると確信しています。考え?

0 投票する
1 に答える
221 参照

django - パスワード付きフォームの Django Unittest

初期データをフォームに渡しながらフォームをテストするdjangoで単体テストを作成し、それが有効か無効かを確認したいと思います。問題は、フレームワークがパスワード フィールドに初期値を設定することを許可していないことです。サブクラス化以外にこれを回避する方法はありますか? 私のコードは以下です。

0 投票する
0 に答える
758 参照

sql - Django TestCase.assertNumQueries - オブジェクト保存時の予期しないクエリ数

マルチテーブル継承を使用する 2 つのモデルがあります。

SubclassModel の既存のインスタンスを更新するために必要なデータベース クエリの数をテストしています。カウントは、変更される属性が BaseModel で定義されているか、SubclassModel で定義されているかによって異なるようです。debugsqlshell を使用すると、次のようになります。

私には、それは 4 つのクエリ (SELECT、UPDATE、SELECT、UPDATE) のように見えます。ただし、assertNumQueries3に設定すると、ユニットテストでのみパスします:

奇妙なことに、SubclassModel で定義されている属性を更新すると、SQL はまったく同じように見えますが、assertNumQueries(4)パスします。

SQLite と MySQL でテスト スイートを実行するときの動作は同じです。