私はDjangoのアプリをテストするには、以下の方法でカバレッジを使用しています:私のテストスイートでviews.pyのDjango関数定義はカバレッジに表示されませんか?
DJANGO_SETTINGS_MODULE=$(SETTINGS) coverage run manage.py test -v 2
DJANGO_SETTINGS_MODULE=$(SETTINGS) coverage report
を私はいくつかのビューをテスト:
class TestJSON(TestCase):
def setUp(self):
self.client.login(username='admin', password='passwordz')
def test_bookmarks_json(self):
translator = User.objects.create_user('normaluser', '[email protected]',
'secretz')
search = SearchBookmark(
search="minutes")
search.save()
response = self.client.get('/bookmarks_json/')
ans = json.loads(response.content)[0]
self.assertEqual(...)
だから私は明確にするために、そのビューで定義されたすべてのものを打っています'/bookmarks_json/'
。決してcoverage report
以下が署名行は、私がここにDjango coverage test for URLs 0%, why?をネッドBatchelderによって溶液を見ていると私はそれはいくつかの方法に関連している推測しています。:例えば、
@login_required
def bookmarks_as_json(request):
bookmarks = SearchBookmark.objects.all()
data = serializers.serialize("json", bookmarks)
return HttpResponse(data, content_type='application/json')
をヒットしていないことを言っていません。 その結果、私は自分のテストランナーを書いた:
import os
import sys
import django
from django.conf import settings
from django.test.utils import get_runner
if __name__ == "__main__":
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings.dev'
django.setup()
TestRunner = get_runner(settings)
test_runner = TestRunner(verbosity=2)
failures = test_runner.run_tests(["myapp.tests"])
sys.exit(bool(failures))
そして
python testrunner.py # works, def in view.py is reported !
しかし、私は通常のコマンド./manage.py test
を使用したいと思い、これを修正する方法がある場合ので、私は思っていました、私自身のテストランナーを書いていない。
これは問題ではありません。あなたが見ていないのは、私の 'setUp'メソッドがログインをしていることです。私はまた、配信されたコンテンツが問題ないことを確認しています。 – Oz123
あなたはsetUpメソッドを最初に表示していないので、ログインしていないことがわかりました。今すぐこの回答を削除します。 – Alasdair