問題タブ [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 に答える
2929 参照

python - djangoユニットテスト出力

Pythonサブプロセスを介してdjangounittestを実行し、すべてのデータ(特にFailureまたはOKという単語)を変数に格納したいと思います。ただし、サブプロセスを使用してこれを実行すると、出力には次の部分のみが含まれます。

"エイリアス'default'のテストデータベースを作成しています...""エイリアス'default'のテストデータベースを破棄しています..."

残りは画面に表示されるだけですが、これは私が望まないことです。djangoユニットテストからのすべての出力を変数に取り込むにはどうすればよいですか?

出力は次のようになります。エイリアス'default'のテストデータベースを作成しています...エイリアス'default'のテストデータベースを破棄しています...

ただし、私の画面には、djangoユニットテストの標準出力全体が表示されます。すべての出力を変数に格納するにはどうすればよいですか。

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

django - Django 単体テストはプロジェクト全体で失敗しますが、アプリ全体で合格します

Ubuntu 12.10でPython 2.7でDjango 1.4を使用しています。

いくつかのアプリと数十の単体テストを含むプロジェクトがあります。@override_settings最近、デコレータを使用して小さな問題に遭遇しました。

ここにいくつかのコードがあります:

テストがアプリ レベルで実行されると、すべてが成功します。

しかし、プロジェクト レベルで実行すると失敗します。

some stuffを使用しているため失敗していますが、実際のを使用し/test/mediaているモデル メソッドです。offer.get_contect_dict()/mediaMEDIA_URL

MEDIA_URLファイル内の を変更することはできsettings/test.pyますが、それにはすべてのテストを使用する必要があります/test/media(とにかく良い考えかもしれません)。

明らかに問題は Djangoにあります。テスト スイートcore.files.storage.FileSystemStorage.__init__()の初期値を設定しbase_urlますが、(明らかな理由で) 各テストの後にオブジェクトを再インスタンス化しないため、@override_settings実際には何もしません。

これはバグですか、それとも意図したとおりに機能していますか? to に定数を/test/media設定して、すべての単体テストを強制的に使用する以外のエレガントなソリューションへの提案はありますか?MEDIA_URLsettings/test.py/test/media

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

python - Django 単体テストが E でスタックする

Djangos Unit Testing Framework で奇妙なエラーが発生しています。以前は機能していましたが、突然、テストが機能しなくなりました。

フレームワークは次のように出力します。

それEが最後のことです。そこで、すべてがフリーズします。

1 つのアプリをテストするだけの場合も (実行テストなしで) 同じです。クラッシュの直後にテストを実行すると、次のようになります。

明らかな問題は、テスト データベースが決して破棄されないことです。

何が原因でしょうか?また、解決策は何ですか?

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

django - django-social-authでユーザーをログインさせる

私はそのようにユニットテストを設定しました:

最後のアサーションのみが失敗し、その最後のアサーションで「すでにログインしています」を「まだログインしていません」に置き換えると、テストに合格するため、ログインに失敗したように見えます。これはdjango-social-auth、OpenIdログインを許可するために使用しているためだと思います。

どうすればユニットテストでユーザーがログインしたと見なすことができますか?それuser.is_authenticatedは本当ですか?ユーザーがログインしているときとそうでないときでビューが正しく表示されることをテストしたいだけで、ログインが実際に機能するかどうかの単体テストについては特に気にしません。

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

python - Django単体テスト:HTMLをテストするためのCSSセレクタ?

Rails フレームワークについて発見したことがあり、私が本当に気に入っている点があります。たとえば、特定の ID を持つ要素が存在する場合、ページ内にいくつの "li" 要素があるかをテストするなど、css セレクターを使用してテンプレートの出力を非常に簡単にテストする機能です。 、ecc。

AssertContains は、これらのツールに比べて非常に制限されているように感じます。チェックしてください: http://guides.rubyonrails.org/testing.html#testing-views

djangoで同様のことを達成するにはどうすればよいですか? CSS セレクターを実装する Python ライブラリはありますか?

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

python - django unit-test ログイン ユーザーが「重複エントリ」エラーを引き起こす

次のテストがあります

テスト メソッド (test_test) が 1 つしかない場合、テストは機能します。しかし、複数のメソッド (test_test2) がある場合、「IntegrityError: Could not load web.CustomProfile(pk=1): (1062, "Duplicate entry '1' for key 'id_user'")」というエラーが発生し続けます。

エラートレースは以下です。助けていただければ幸いです。

フィクスチャ '/Users/ruixia/public_html/x/project/web/fixtures/data.json' のインストールの問題: トレースバック (最新の呼び出しが最後):

ファイル "/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/core/management/commands/loaddata.py"、196 行目、ハンドル obj.save(using=using) 内

ファイル "/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/core/serializers/base.py"、165 行目、save models.Model.save_base(self.object, using=using) 、生 = True)

ファイル "/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/models/base.py"、551 行目、save_base の結果 = manager._insert([self], fields=fields , return_id=update_pk, using=using, raw=raw)

ファイル「/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/models/manager.py」、203行目、_insert return insert_query(self.model, objs, fields, **クワーグス)

ファイル「/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/models/query.py」、1576行目、insert_query return query.get_compiler(using=using).execute_sql(return_id )

ファイル "/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/models/sql/compiler.py"、910 行目、execute_sql cursor.execute(sql, params) 内

ファイル "/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/backends/mysql/base.py"、114 行目、実行時 return self.cursor.execute(query, args)

ファイル "/Users/ruixia/virt_env/x/lib/python2.7/site-packages/MySQLdb/cursors.py"、201 行目、実行中の self.errorhandler(self, exc, value)

ファイル "/Users/ruixia/virt_env/x/lib/python2.7/site-packages/MySQLdb/connections.py"、36 行目、defaulterrorhandler で errorclass、errorvalue IntegrityError: Could not load web.CustomProfile(pk=1) : (1062、「キー 'id_user' のエントリ '1' が重複しています」)

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

python - Djangoユニットテストクライアントの応答に空のコンテキストがあります

同じテストケースクラスの別のテストに合格するアサーションで失敗する単体テストがあります。

合格テストは次のとおりです。

失敗したテストは次のとおりです。

2番目のテストでは、エラーが発生しますTypeError: 'NoneType' object has no attribute '__getitem__'

2番目のテストを次のように実行すると

エラーが発生しますTypeError: argument of type 'NoneType' is not iterable。2番目のテストのprintステートメントを使用して、response.contentに取得する予定のページが含まれていること、ステータスコードが正しいこと、およびテンプレートが正しいことを確認しました。ただし、応答のコンテキストは一貫Noneして2番目のテストにあります。

Djangoの単体テストを標準の「pythonmanage.pytest...」インターフェースで実行しているので、「コンテキストがシェルから空です」という問題が発生しているとは思いません。

これで何が起こっているのですか?

編集:

print type(resp.context['a_formset'])各テストに追加すると、動作テストに対してが得られ<class 'django.forms.formsets.AFormFormSet'>ます。動作しないテストについては、私はTypeError: 'NoneType' object has no attribute '__getitem__'再び取得します。

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

django - 依存プロジェクトでのセレン テストの実行

同じコードベースを使用し、別々の設定ファイルを持つ 2 つの Django プロジェクト (プロジェクト A とプロジェクト B) があります (contrib.sites フレームワークを使用します)。プロジェクトも同じデータベースを使用します。

プロジェクト A はプロジェクト B に依存しています: ユーザーがプロジェクト A からログインしたい場合、(いくつかのアクションを実行するために) プロジェクト B ビューにリダイレクトされ、その後プロジェクト A に戻ります。テスト。

とりわけ、いくつかの Selenium テストを含むテスト スーツがあります。プロジェクト A のログイン ビューをテストするには、プロジェクト A と B の両方が Selenium テストの実行時にライブである必要があります。通常はそうするだろう

その後

ただし、2 つのプロジェクトは同じデータベースを使用する必要があり、プロジェクト A のテスト用データベースは実行時に作成されます。

どうすればこの問題を解決できますか? テスト ランナーがプロジェクト B もデプロイする方法はありますか?

現時点では、標準の Django テスト ランナーを使用していますが、切り替え (たとえば、鼻またはあなたが提案するもの) を行うことは問題になりません。

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

django - Django リバース インバース

Django の逆メソッドはありdjango.core.urlresolvers.reverse()ますか?

みたいな機能f(x)が欲しいf(django.core.urlresolvers.reverse('shadowfax')) == 'shadowfax'

これが を呼び出すメソッドの単体テストを作成するための適切なアプローチであるかどうかについて、何か言いたいことはあります.reverse()か?

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

python - 1 つの Django アプリでデコレーターをモックする

テストしたい

  • ビュー デコレータが適切に機能する場合
  • 適切なビューが呼び出された場合

したがって、ここにデコレータget_objectとビューfeaturesがありmyapp.viewsます。

私はこれを嘲笑してみます:

モック オブジェクトが呼び出されていないかのように、これは何も表示しません。

装飾されたビューを適切にモックするにはどうすればよいですか?