如何使用GraphQLTestCase在graphene-django中使用django-grahql-jwt进行身份验证?

问题描述

我在项目中使用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(post.tests.PostTestCase)

回溯(最近通话最近): 在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) 销毁测试数据库的别名“默认” ...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)