Django初始化所有测试类的数据测试

时间:2018-09-16 12:06:02

标签: python django python-3.x testing automated-tests

我需要将测试添加到django项目中,我需要在执行测试之前创建数据测试。我在this question中了解了setUp测试数据。我可以在setUpClass中为类中的所有测试创建数据。创建我的完整数据测试是一种耗时的方法,因此我想对所有测试类都运行一次,是否有一种方法可以一次为所有测试类设置数据?

1 个答案:

答案 0 :(得分:1)

我找到了答案,希望它可以帮助其他人。基于django docs

  

测试运行程序是定义run_tests()方法的类。 Django附带了一个DiscoverRunner类,该类定义了默认的Django测试行为。此类定义了run_tests()入口点,以及run_tests()用来设置,执行和拆除测试套件的其他方法的选择。

对于这个问题,该类中有2种有用的方法。setup_databasesteardown_databases,因此我们可以覆盖它们以初始化所有测试类的数据。

from django.test.runner import DiscoverRunner as BaseRunner

class MyMixinRunner(object):
    def setup_databases(self, *args, **kwargs):
        temp_return = super(MyMixinRunner, self).setup_databases(*args, **kwargs)
        # do something
        return temp_return

    def teardown_databases(self, *args, **kwargs):
        # do somthing
        return super(MyMixinRunner, self).teardown_databases(*args, **kwargs)

class MyTestRunner(MyMixinRunner, BaseRunner):
    pass

在定义测试运行器类之后,我们需要向设置中添加TEST_RUNNER

TEST_RUNNER = 'path.to.MyTestRunner'