Django测试:self.client.post没有第二次执行

时间:2018-10-10 10:12:19

标签: python django testing

我试图使用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
        )

似乎没有执行负责发送第二个请求的代码。 我真的不知道发生了什么事

0 个答案:

没有答案