繁体   English   中英

可以在运行测试环境之前将数据插入django测试数据库吗? 覆盖Setup()无法解决

[英]Can insert data to django test database before run test envirunment? Override Setup() didn't solve

问题描述

我正在寻找一种在运行django test之前将数据插入django test数据库的方法。 发生此要求是因为url设置如下所示。

urls.py

group_names = Group.objects.values_list('name', flat=True)
for group in group_names :
    url(r'^{}/{}'.format(group,'webindex'), web_index)

例如,如果数据库“组”表中有group1和group2,则URL将为“ / group1 / webindex /”和“ / group2 / webindex /”。 在生产环境中可以找到此作品。 页面显示成功。 因为生产数据库已经退出了组数据。
但是,当我想为web_index编写测试用例时,发生了问题。 这是我的代码。

tests.py

class webindexTestCase(TransactionTestCase):
    fixtures = ['./auth_group.json']
    def test_webindex(self):
        c = Client()
        r = c.get('/group1/webindex/')
        print(r.status_code)

在运行测试时,http响应代码始终为404。据我所知,这是因为在运行django test时,在将组数据插入测试数据库之前已设置了网址。
因此,我想知道是否有一种方法可以在设置url模式之前将数据插入django测试数据库,或者在运行此测试时重置url模式?

我尝试过的

  1. 手动将组数据插入测试数据库,然后运行测试:
    在运行python manage.py test之前,将组数据插入到test数据库中。 尽管这种方法有效,但是响应代码为200。但是,我正在寻找一种自动执行此操作的方法。

  2. 使用setUp()
    我尝试在我的测试用例中覆盖Setup(),如下所示。 这仍然得到404 https respone。 我认为,django url设置在setUp()之前运行。

class webindexTestCase(TransactionTestCase):
    def setUp(self):
        Group.objects.create(name='group1')

    def test_webindex(self):
        c = Client()
        r = c.get('/group1/webindex/')
        print(r.status_code)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM