問題タブ [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 投票する
4 に答える
36457 参照

python - django チュートリアル テストの実行が失敗する - polls.tests という名前のモジュールがありません

django 1.6 チュートリアルで遊んでいますが、テストを実行できません。私のプロジェクト (名前は mydjango) とアプリの構造 (名前は polls) は、virtualenv で以下に示すとおりです。(.nja ファイルは、私が使用している ide の ninja-ide によって作成されたものです)

django がどのように機能するかを理解するためにチュートリアルに従いましたが、テスト部分で立ち往生しています。チュートリアルで示唆されているように、tests.py という名前のファイルを app フォルダーに作成しました。かなり単純なファイルは次のとおりです。

次に、unittest2をvirtualenvにインストールしました

そして走る

テストを機能させる方法はありません。アプリ名を渡さない場合も、同じエラーが返されます。

私の INSTALLED_APPS は次のとおりです。

私は何を間違っていますか?

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

python-2.7 - Django: manage.py test myApp を実行すると、関係 "auth_user" が既に存在します

スタック トレース:

私のsettings.pyファイル:

私の疑い: models.py では、models.py が実際にどのように機能するかについて以前に誤解していたため、クラス AuthUser() を手動で追加しました。

カスタムフィールド/属性が欲しかったので、これがその方法だと思いました。さらに、Django によって生成された postgres の auth_user テーブルを実際に変更して、カスタム フィールドも追加しました。

今、./manage.py test myApp を実行しようとすると、上記のスタックトレースが表示されます。以下は、クラス AuthUser() です。

上記のスタックトレースが、実行中のコンテキストで models.py にクラス AuthUser() を定義することによって引き起こされることを確認していません./manage.py test myApp。私の質問は次のとおりです。

  • ./manage.py test myAppmodels.py の現在の実装を続行し、単体テストを正常に実行して続行するにはどうすればよいですか?
  • カスタマイズされたフィールドで models.py の AuthUser クラスを修正するにはどうすればよいですか?
    • models.py の CustomUser クラスと 1 対 1 の関係で Django の User クラスを拡張することで、これを修正できますか?
    • postgres DB で作成した CurriculaUserMap への ManyToManyField 関係もサポートしますか?

私の懸念は、これを「正しい方法」で修正するためにジャンプした場合です。それはほとんどすべてを壊すでしょう。

お時間をいただきありがとうございます!

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

python - Django の manage.py test コマンドで実行されたテストを確認する方法

Django のmanage.py testコマンドを使用してテストの実行が終了すると、合格したテストの数だけがコンソールに出力されます。

見る方法はありますか:

  1. 実際に実行されたテスト
  2. どのモジュールから
  3. どのような順序で

ドキュメントで解決策が見つかりませんでした。

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

python - Django でカスタム User モデルを説明するテストを作成するには?

TL;DR:

使いたくない@skipIfCustomUser どうすればいいですか?


Django はカスタム ユーザー モデルを で定義できるようにしており、 docs で現在の (スワップされた)モデルを参照するためにsettings.pyを使用する必要があると述べています。get_user_model()User

さらに、ドキュメントは親切に次のように言っています。

User モデルと対話するアプリケーションを作成している場合は、いくつかの予防策を講じる必要があります...

テスト スイートがすべてのプロジェクト構成に確実に合格するようにするには、デコレータをdjango.contrib.auth.tests.utils定義します。@skipIfCustomUserこのデコレーターは、テスト ケースをスキップさせます ...

私には、ますます多くの Django プロジェクトがカスタム ユーザー モデルを持っていることを期待するのが妥当に思えます。そのため、これらのプロジェクトに対しても自分のアプリをテストできるようにしたいと考えています。

しかし、どうすればそれができますか?

参考までに、すべてが失敗する場所は次のとおりです。

ユーザーモデルがusernameフィールドを定義していない場合、最後の行は失敗します。これは、CustomUserたとえばDjango 自身のテストの場合です。

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

python - 大規模なデータセットを使用した django テストの高速化

大規模なデータ セットを使用した django での単体テストの実行が非常に遅い (2 時間以上) という問題がありました。そのため、テストを高速化するために次のように記述しました。これは、フィクスチャを静的な django モデル オブジェクトの作成に置き換えるために最初に作成したものです。

私は現在、速度をさらに改善することを検討していますが、これをより高速で効果的な小さなデータセットにする方法はありますか?

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

python - Django ユニットテスト内で commit_manually をテストする方法

単体テストからcommit_manually()を使用する Django コードをどのようにテストしますか?

システムメモリをすべて消費せずに単一のトランザクションですべての変更を保持できないように、多数のレコードを削除する長時間実行されるメソッドがあります。だから私はそれをラップして@commit_manually定期的に呼び出しますcommit()

ただし、Django 1.6 では、すべての単体テストが でラップされるtransaction.atomic()ようになったため、手動でコミットしようとすると、次のエラーが発生します。

django.db.transaction.TransactionManagementError: 「アトミック」ブロックがアクティブな場合、これは禁止されています。

これに対する回避策は何ですか?