我对Django相当陌生,在Laravel方面有着坚实的背景(如果你恰巧做了一个很棒的类比)
我正试图把一具身体传到终点,但我做不到。
我试过:
fake = Faker('pt_PT')
fake.add_provider(company)
client = APIClient()
class CompanyPostTestCase(APITestCase):
def setUp(self):
self.email = fake.email()
self.username = str(fake.company()).split()[0]
self.valid_payload = {
'email': self.email,
'password': '123',
'username': self.username
}
def test_company_was_created(self):
response = self.client.post('/v1/company/',
self.valid_payload,
# Also tried with content_type='application/json'
format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)但是,在调试模式下执行时,response对象在_closable_objects中有POST和QueryDict: {},我假设没有指定body。此外,错误消息表示b'{"message":"You must provide a password"}',它清楚地显示身体没有被传递。
通过邮递员,我可以提出同样的请求,并创建一个没有任何问题的Company。
任何解决这个问题的主意都是很棒的。
编辑也尝试过将valid_payload直接传递给client.post(),如下所示:
response = client.post('/v1/company/', data={
'email': self.email,
'password': '123',
'username': self.username
},
format='json')在那之后仍然不工作
发布于 2019-03-21 15:18:10
客户端不是可能导致问题的CompanyPostTestCase的一部分。初始化内部函数可以解决这个问题。
class CompanyPostTestCase(APITestCase):
def setUp(self):
self.email = fake.email()
self.username = str(fake.company()).split()[0]
self.valid_payload = {
'email': self.email,
'password': '123',
'username': self.username
}
def test_company_was_created(self):
client = APIClient()
response = client.post('/v1/company/',
self.valid_payload,
format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)发布于 2020-09-30 06:39:21
最近,我遇到了一个类似的问题,我发了一篇文章,以防万一它能帮助任何处于同样位置的人,因为这是一种痛苦的调试。
在我的例子中,结果是由于DRF的DEFAULT_PARSER_CLASSES在Django设置文件中指定了一个不正确的JSON解析器类。解决方案只是将其替换为默认的DRF解析器(rest_framework.parsers.JSONParser)。
https://stackoverflow.com/questions/55283633
复制相似问题