3

我正在尝试使用此处的示例对 REST API 视图集进行单元测试。如果我在 manage.py shell 中逐行运行代码,我可以很好地进行身份验证并获得 200 响应代码。当它在我的单元测试中时,身份验证失败!

这是课程:

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)

如果我将断言更改为:

self.assertTrue(client.login(username='test@test.us',password='realpassword'))

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

4

1 回答 1

3

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

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)
于 2015-09-03T21:15:17.437 回答