我正在测试Django应用程序登录部分。 我的工作流程是client.get('/ run / experiment / 1')->响应302,重定向到登录页面-> client.post('loginpage',{'username':'tester','password':'测试人员'})-> client.get('/ run / experiment / 1')->响应200。 我已经在shell中测试了此流程(逐行键入并执行命令行),并且按预期工作。 但是,当我编写测试文件时,即使在发布登录名之后,尝试client.get时,状态仍然为302。 这是我的代码:
from django.test import TestCase, Client
class TestRunRequireLogin(TestCase):
def setUp(self):
self.client = Client()
def test_rerun_not_login(self):
response = self.client.get('/experiment/1')
self.assertEqual(response.status_code, 302)
def test_rerun_login(self):
self.client.post('/accounts/login/?next=/run/experiment/1', {'username': 'tester', 'password': 'tester'})
response = self.client.get('/experiment/1')
self.assertEqual(response.status_code, 200)
所以我的问题是何时在test_rerun_login中,为什么登录后仍然得到302
答案 0 :(得分:1)
您有用户吗?您是否具有用户名tester
和密码tester
的用户?如果是这样,则需要在测试用例中创建它们。
将视图发布到此处可能会很方便。您可以打印表格吗?错误?您可能会在这里找到答案。
答案 1 :(得分:0)
对空数据库运行测试。您需要使用setUp
方法创建用户。