我目前正在使用一些 api-unit-tests 测试我的 django (2.1.0) 应用程序。我使用 django rest 框架(3.9.0)来构建登录。为此,我使用这样的代码:class LogoutTest(APITestCase): def test_login_post_unauth(self): response = requests.post('http://127.0.0.1:8000/myapp/user_info/') self.assertEqual(response.status_code, 401) def test_login_put_auth(self): token = auth() payload = {'Authorization': 'Token '+token} response = requests.put('http://127.0.0.1:8000/myapp/user_info/', headers=payload) self.assertEqual(response.status_code, 405) def test_login_delete_auth(self): token = auth() payload = {'Authorization': 'Token '+token} response = requests.delete('http://127.0.0.1:8000/myapp/user_info/', headers=payload) self.assertEqual(response.status_code, 405)当我使用时,测试正在运行:coverage run --source='.' manage.py test myapp就像你看到的:Creating test database for alias 'default'...System check identified no issues (0 silenced).....................................----------------------------------------------------------------------Ran 36 tests in 5.082sOKDestroying test database for alias 'default'...但是当我做覆盖报告时,我只是得到myapp/auth.py 72 46 36%尽管我的 api 测试使用了我的 auth.py 中的代码。我的 auth.py 看起来像这样: def logout(request): if request.method == 'GET': request.user.auth_token.delete() return JsonResponse({'message':'You are sucessfully logged out'}, status=200) return JsonResponse({'error': 'Other Methods than GET not allowed'}, status=405)但报道说return JsonResponse({'error': 'Other Methods than GET not allowed'}, status=405) will never be used.你有想法吗?
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
我找到了答案。我写了错误的测试。Django 提供了他自己的测试工具,你应该使用它们!并且不要写一些带有请求的东西,因为覆盖率会在例如 auth.py 中将您的代码标识为未使用,因为您的测试不是使用 django 测试工具
添加回答
举报
0/150
提交
取消