我是django的新手。在我的第一个django应用程序中,我正在测试我的一个视图来检查登录。以下是我的观点:
from testprjct.testapp.forms import LoginForm_form
from django.contrib import auth
def check_login(request):
if request.method == 'POST':
form = LoginForm_form(request.POST)
if request.POST and form.is_valid():
username = request.POST.get('username', '')
password = request.POST.get('password', '')
# I am hard-coding the credentials here just for testing
user = auth.authenticate(username = 'test123', password = 'qwerty')
if user is not None and user.is_active:
auth.login(request, user)
.....
当我运行服务器并尝试从前端登录时,此视图正常工作。但是在执行此视图的测试用例时失败。这是我对此视图的测试代码:
from testprjct.testapp.models import loginform
class ViewTests(TestCase):
def setUp(self):
loginform.objects.create(username='test123', password='qwerty')
def test_login(self):
response = self.client.get('/login/')
self.assertEqual(response.status_code, 200)
response = self.client.post('/login/', {"username": "test123", "password": "qwerty"})
print response
self.assertEqual(response.status_code, 302)
通过提供登录详细信息无效的消息,它始终返回200 status_code(不重定向到成功页面)。
当我在登录页面中测试忘记密码链接时,问题相同。当提供有效的电子邮件ID时,它在前端工作正常。但是从我的测试用例中它总是给我回复错误消息,即电子邮件ID没有关联的用户帐户,即使我提供的是我在前端提供的相同的电子邮件ID。
有什么建议吗?我花了很多时间来解决这个问题。
答案 0 :(得分:0)
Django设置了一个新的测试数据库,因此它不会访问您现有的数据。您需要在测试本身或setUp
方法中创建所需的数据。