【发布时间】:2021-11-30 22:50:50
【问题描述】:
我有一个问题,我不确定我是否忽略了什么,或者只是做错了什么。我正在尝试测试一个允许用户注册的端点。
我的模特:
class Account(User):
objects = UserManager()
balance = models.FloatField(blank=True, default=0)
rank_position = models.IntegerField(blank=True, null=True)
rank_title = models.CharField(max_length=255, blank=True, default="Novice")
序列化器:
class AccountSerializer(ModelSerializer):
class Meta:
model = Account
fields = '__all__
查看:
@api_view(['POST'])
def register(request):
try:
acc = Account.objects.create(**request.POST)
acc_srl = AccountSerializer(acc)
return Response(data=acc_srl.data, status=status.HTTP_201_CREATED)
except Exception as e:
return Response(status=status.HTTP_400_BAD_REQUEST)
我正在尝试通过以下方式使用 Django 测试客户端:
class TestAuthentication(TestCase):
def setUp(self):
self.c = Client()
def test_register(self):
data = {'username': 'test_user', 'password': '1234'}
response = self.c.post('/api/register/', data)
print(response.json())
self.assertEqual(response.status_code, 201)
acc = Account.objects.get(username="test_user")
self.assertEqual(acc.username, "test_user")
self.assertTrue(isinstance(acc, User))
函数按预期工作,但发生了一件奇怪的事情。当我检查request.POST 时,用户名和密码都是这样的列表:
<QueryDict: {'username': ['test_user'], 'password': ['1234']}>
我很困惑,因为我不明白导致这种行为的原因。
【问题讨论】:
标签: django django-testing