删除Django tes上的测试数据

2024-04-23 09:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django应用程序,我试图创建API请求的测试,不能删除测试期间创建的数据。你知道吗

addproduct请求在Product表上创建register,并在Stock表上创建register

我的测试类:

class TestSaleBuyRequest(TestCase):
    def setUp(self):
        self.BASE_URL = 'http://localhost:8000/api/'
        token = json.loads(requests.post(f'{self.BASE_URL}auth/',
                            data={
                                    "username":"user", 
                                    "password":"pass"}
                            ).text)['token'] 
        self.headers={"Authorization":f"token {token}"}


    def test_create_products(self):
        self.product_1 = json.loads(requests.post(  f'{self.BASE_URL}product/', 
                                    data={
                                            "name":"_TEST_PRODUCT NAME",
                                            "brand":"_TEST_PRODUCT BRAND",
                                            "unit":"_TEST_PRODUCT UNIT"},
                                    headers=self.headers
                                ).text)

        self.product_2 = json.loads(requests.post(  f'{self.BASE_URL}product/', 
                                    data={
                                            "name":"_TEST_PRODUCT NAME2",
                                            "brand":"_TEST_PRODUCT BRAND2",
                                            "unit":"_TEST_PRODUCT UNIT2"},
                                    headers=self.headers
                                ).text)
        expected_1 = {
                    "name":"_TEST_PRODUCT NAME",
                    "brand":"_TEST_PRODUCT BRAND",
                    "unit":"_TEST_PRODUCT UNIT",
                    "response":{
                                    "status":200
                                    }
        }
        result_1 = {
                    "name":self.product_1["name"],
                    "brand":self.product_1["brand"],
                    "unit":self.product_1["unit"],
                    "response":{
                                    "status":self.product_1["response"]["status"]
                                    }
        }
        expected_2 = {
                    "name":"_TEST_PRODUCT NAME2",
                    "brand":"_TEST_PRODUCT BRAND2",
                    "unit":"_TEST_PRODUCT UNIT2",
                    "response":{
                                    "status":200
                                }                         
        }
        result_2 = {
                    "name": self.product_2["name"],
                    "brand": self.product_2["brand"],
                    "unit": self.product_2["unit"],
                    "response":{
                                    "status":self.product_2["response"]["status"]
                                    }
        } 
        self.assertEqual(expected_1, result_1)
        self.assertEqual(expected_2, result_2)

我创建了一个delete函数:

def delete_data_tests():

    print('INICIANDO DELETE')
    delete_ids = Product.objects.filter(name__icontains='_TEST_')
    cont = delete_ids
    print('Aquivos de testes encontrados', len(delete_ids))

    for prod in delete_ids:
        print('\nTRYING DELETE PROD:',prod.id)
        Stock.objects.filter(product=prod).delete()

    print('VERIFICANDO REMANESCENTES')
    print('Aquivos de testes encontrados', len(Product.objects.filter(name__icontains='_TEST_')))
    return delete_ids.delete()
    print('\nFINALIZADO')

但是当我在里面运行这个函数时测试.py这个产品.objects.filter(name\u icontains='TEST')返回0个结果。你知道吗

OBS:当我把她送到外面的时候,这个功能就起作用了测试.py你知道吗


Tags: nametestselfidsurlbaseresponsestatus