我在项目中使用Django和Graphene。我用GraphQLTestCase
编写了测试。当我尝试使用JWT对用户进行身份验证时,通常会收到错误消息。
这是我的代码:
from django.test import TestCase
import json
from graphene_django.utils.testing import GraphQLTestCase
from resume.graph.schema import schema
from .models import Post
from django.contrib.auth import get_user_model
from graphql_jwt.shortcuts import get_token
User = get_user_model()
class PostTestCase(GraphQLTestCase):
GRAPHQL_SCHEMA = schema
def test_post_list(self):
token = get_token(User.objects.get(pk=1))
headers = {"HTTP_AUTHORIZATION": f"JWT {token}"}
response = self.query(
'''
query {
post{
user
text
}
}
''',
op_name = 'post',
headers=headers,
)
content = json.loads(response.content)
self.assertResponseNoErrors(response)
这是运行python manage.py测试后得到的错误。
回溯(最近通话最近): 在test_post_list中的第25行,文件“ C:\ Users \ Udemezue \ Desktop \ resume \ post \ tests.py” 令牌= get_token(User.objects.get(pk = 9)) 文件“ C:\ Users \ Udemezue \ Desktop \ resume \ env \ lib \ site-packages \ django \ db \ models \ manager.py”,第82行,在manager_method中 返回getattr(self.get_queryset(),name)(* args,** kwargs) 在获取文件“ C:\ Users \ Udemezue \ Desktop \ resume \ env \ lib \ site-packages \ django \ db \ models \ query.py”中,行415 提高self.model.DoesNotExist( account.models.User.DoesNotExist:用户匹配查询不存在。
这是我得到的错误。
回溯(最近通话最近): 在test_post_list中的第62行,文件“ C:\ Users \ Udemezue \ Desktop \ resume \ post \ tests.py” self.assertResponseNoErrors(响应) 在assertResponseNoErrors中的文件“ C:\ Users \ Udemezue \ Desktop \ resume \ env \ lib \ site-packages \ graphene_django \ utils \ testing.py”,行75 self.assertEqual(resp.status_code,200) AssertionError:400!= 200
在0.137秒内进行了1次测试
失败(失败= 1) 销毁测试数据库的别名“默认” ...
答案 0 :(得分:1)
这对我有用。
from django.contrib.auth import get_user_model
from graphql_jwt.shortcuts import get_token
User = get_user_model()
import json
class PostTestCase(GraphQLTestCase):
def test_post_list(self):
user = get_user_model().objects.create(username='myuser')
token = get_token(user)
headers = {"HTTP_AUTHORIZATION": f"JWT {token}"}
response = self.query(
'''
query GetUser($username: String!) {
user(username: $username) {
id
}
}
''',
headers=headers,
)
content = json.loads(response.content)
self.assertResponseNoErrors(response)