私はSatchmoショッピングカートソフトウェアを使用して、Djangoプロジェクトに取り組んでいます。このプロジェクトにはかなり複雑なカスタムコードを使用する必要があるため、すべてのDjangoテストとSatchmoテストに合格させたいと考えています。
ただし、テストの1つは、で正確に言えば、単独でのみ機能しcustom.ShopTest.test_custom_product
ますproduct/modules/custom/tests.py
。このテストは単独で(つまり./manage.py test custom.ShopTest
)で機能しますが、すべてのテストを一緒に実行した場合()では機能しません./manage.py test
。
このテストでは、Djangoテストクライアントを使用してホームページを開き、ページにテキストが含まれているかどうかを確認します。同じフィクスチャを本番データベースにロードすると、これらのテキストもページに表示されます。
また、テスト開始時に、ページにタイトルを表示する必要のある製品もテストデータベースに存在するため、フィクスチャが正しくロードされます。
他のSatchmoアプリのいくつかは、何らかの方法でテストを中断していると思いますが、Djangoは可能な限り単独でテストを実行すると常に想定していました。
編集:
失敗したテストの出力は次のとおりです。
======================================================================
FAIL: test_custom_product (product.modules.custom.tests.ShopTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/data/Projects/satchmo/satchmo/apps/product/modules/custom/tests.py", line 43, in test_custom_product
self.assertContains(response, "Computer", count=1)
File "/data/PythonEnvironments/mywebsite.nl/local/lib/python2.7/site-packages/django/test/testcases.py", line 427, in assertContains
" (expected %d)" % (real_count, text, count))
AssertionError: Found 0 instances of 'Computer' in response (expected 1)
----------------------------------------------------------------------
編集2:要求されたビュー関数にブレークポイントを設定したときにテストが常に発生するとは限らないことを発見しました。しばらく待ってから、デバッガーがブレークポイントで停止したときに続行します。多分これは糸脱毛と関係がありますか?