【发布时间】:2019-04-26 05:24:14
【问题描述】:
如何使用 Django 测试客户端提交 POST 请求?我只想测试我的应用程序的登录功能。我放的很奇怪
response = self.client.post(reverse('rbac:login'), data=data) 在我的测试用例中,我想验证它所以我打印 response.status_code。实际上它应该返回 302 因为它应该转到另一个页面。但它返回 200。这种情况发生在我使用“python manage.py test testmodel”进行测试时。但是,如果我使用 "python manage.py shell" 制作一个 InteractiveConsole 并编写完全相同的代码,它最终会返回 302。
我几乎尝试过堆栈溢出提供的所有方法,例如更改网址,在我发布时提供内容类型....但这些毫无意义。
from django.test import TestCase
from django.test.utils import setup_test_environment,teardown_test_environment
from django.test import Client
from django.urls import reverse
import django
from rbac.models import RbacUser, RbacRole
from system_module.models import Redeploy
from urllib import urlencode
class CreateUser(TestCase):
@classmethod
def setUp(self):
self.client = Client()
def test_create_user(self):
data = {"Username": "admin_xy", "Password": "aaa"}
response = self.client.post(reverse('rbac:login'), data=data)
print response
它显示我 200 ..... 但是,在交互式控制台中:
>>> response = client.post(reverse('rbac:login'), data=data)
>>> print response.status_code
302
它显示了正确的结果。 我想知道如何处理这个烦人的问题。谢谢
我希望当我使用测试文件来测试我的测试用例时,它可以正常工作....就像显示 302 代码一样。
【问题讨论】:
标签: python django testing post client