为了账号安全,请及时绑定邮箱和手机立即绑定

覆盖率显示 Django 测试的百分比太低

覆盖率显示 Django 测试的百分比太低

青春有我 2021-12-17 16:55:57
我目前正在使用一些 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 测试工具


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信