Django REST 框架 APIClient 在 shell 中进行身份验证,但不在我的单元测试中
Django REST framework APIClient authenticating in shell, but not in my unit test
我正在尝试使用此处的示例对 REST API 视图集进行单元测试。如果我 运行 在 manage.py shell 中逐行代码,我可以很好地进行身份验证并获得 200 响应代码。在我的单元测试中,认证失败!
这是class:
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 returns 中的相同命令是正确的。
如果你是运行测试用例,它会自动创建数据库来执行测试。在 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)
我正在尝试使用此处的示例对 REST API 视图集进行单元测试。如果我 运行 在 manage.py shell 中逐行代码,我可以很好地进行身份验证并获得 200 响应代码。在我的单元测试中,认证失败!
这是class:
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 returns 中的相同命令是正确的。
如果你是运行测试用例,它会自动创建数据库来执行测试。在 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)