首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django REST框架APIClient在shell中进行身份验证,但不在我的单元测试中进行验证。

Django REST框架APIClient在shell中进行身份验证,但不在我的单元测试中进行验证。
EN

Stack Overflow用户
提问于 2015-09-03 20:25:50
回答 1查看 1.3K关注 0票数 3

我试图用这里的例子来测试REST视图集。如果我在manage.py shell中逐行运行代码,我就可以很好地进行身份验证并获得200个响应代码。在我的单元测试中,身份验证失败!

这是一堂课:

代码语言:javascript
复制
class RiskViewSetTest(unittest.TestCase):

    def setUp(self):
        pass

    def testClientView(self):
        client = APIClient()
        client.login(username='test@test.us',password='realpassword')
        response = client.get('/api/v1/risks/')
        self.assertTrue(response.status_code, 200)

如果我将断言更改为:

代码语言:javascript
复制
self.assertTrue(client.login(username='test@test.us',password='realpassword'))

它也会失败,而shell中的相同命令返回True。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-03 21:15:17

如果您正在运行测试用例,它将自动创建执行测试的数据库。在shell中,您已经有了数据库,并且用户在那里,它正在进行身份验证。因此,您需要在这里创建用户并进行身份验证。遵循以下代码:

代码语言:javascript
复制
class RiskViewSetTest(unittest.TestCase):

    def setUp(self):
        self.client = APIClient()
        User.objects.create_user(
            username='test@test.us', password='realpassword')
    def testClientView(self):
        self.client.login(
            username='test@test.us',password='realpassword')
        response = self.client.get('/api/v1/risks/', format='json')
        self.assertTrue(response.status_code, 200)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32384833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档