0
我使用覆蓋率通過以下方式來測試我的Django應用程序:Django在views.py中的定義不在coverage中顯示?
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
說,簽名行是打不到,例如:
@login_required
def bookmarks_as_json(request):
bookmarks = SearchBookmark.objects.all()
data = serializers.serialize("json", bookmarks)
return HttpResponse(data, content_type='application/json')
我已經看到斯內德爾德的解決方案在這裏Django coverage test for URLs 0%, why?,我猜測這是一些如何相關。 因此,我寫我自己的測試運行:
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