我试图使用POST请求创建一个对象,然后仅使用PUT请求对其进行编辑。
只要我自己亲自执行所有必要步骤,代码本身就会起作用。
不幸的是,每当我尝试使用TestCase对其进行测试时,它都会完全出错。
POST请求正在以适当的方式执行,但是每当我尝试通过PUT操作(在同一代码块内)发送第二个请求时,都不会创建
def test_fully_working_editing_items(self):
self.test_operation_type = "POST"
self.chosen_date_from = str(datetime.now().month) + "/" + str(datetime.now().day) + "/" + str(datetime.now().year)
self.chosen_date_to = str((datetime.now() + timedelta(days=1)).month) + "/" + str((datetime.now() + timedelta(days=1)).day) + "/" + str((datetime.now() + timedelta(days=1)).year)
self.placement = self.test_placement_offer.id
# THIS ONE WORKS
response = self.client.post(reverse('advertisement_user_basket:user_basket_controller'),
data={
'operation': self.test_operation_type,
'chosen_date_to': self.chosen_date_to,
'chosen_date_from': self.chosen_date_from,
'placement': self.placement,
'chosen_impression_number': self.test_impression_number.number
}
)
self.assertEqual(response.status_code, 200)
self.assertEqual(
json.loads(response.content.decode('utf-8'))["is_valid"],
True
)
self.test_obtained_advertisement_item_id = json.loads(response.content.decode('utf-8'))["items"][0]["id"]
'''
============================================================
EDITING ITEMS
============================================================
'''
self.test_operation_type = "PUT"
self.chosen_date_from = str(datetime.now().month) + "/" + str(datetime.now().day) + "/" + str(datetime.now().year)
self.chosen_date_to_new = str((datetime.now() + timedelta(days=3)).day) + "/" + str((datetime.now() + timedelta(days=3)).month) + "/" + str((datetime.now() + timedelta(days=3)).year)
self.placement = self.test_placement_offer.id
logger.error('111111111111111111111111')
# THIS ONE DOES NOT WORK
second_response = self.client.post(reverse('advertisement_user_basket:user_basket_controller'),
data = {
'operation': self.test_operation_type,
'chosen_date_to': self.chosen_date_to_new,
'chosen_date_from': self.chosen_date_from,
'placement': self.placement,
'chosen_impression_number': self.test_impression_number.number,
'item': self.test_obtained_advertisement_item_id
}
)
logger.error('222222222222222222222222')
self.assertEqual(second_response.status_code, 200)
self.assertEqual(
json.loads(second_response.content.decode('utf-8'))["is_valid"],
True
)
logger.error('second_response.content.' + str(second_response.content.decode('utf-8')))
此外,记录器不会打印来自第二个PUT请求的响应(名为“ second_response”) 来自记录器的消息:
ERROR:advertisement_user_basket.tests.test_views:response.content。{“ is_valid”: 真正} 错误:advertisement_user_basket.tests.test_views:111111111111111111111111 错误:advertisement_user_basket.tests.test_views:222222222222222222222222
跟踪:
回溯(最近通话最近):文件 “ /Project/user_basket/tests/test_views.py”,第715行 test_fully_working_editing_items True AssertionError:错误!= True
第715行与以下断言相连:
self.assertEqual(
json.loads(second_response.content.decode('utf-8'))["is_valid"],
True
)
似乎没有执行负责发送第二个请求的代码。 我真的不知道发生了什么事