我需要将测试添加到django项目中,我需要在执行测试之前创建数据测试。我在this question中了解了setUp测试数据。我可以在setUpClass中为类中的所有测试创建数据。创建我的完整数据测试是一种耗时的方法,因此我想对所有测试类都运行一次,是否有一种方法可以一次为所有测试类设置数据?
答案 0 :(得分:1)
我找到了答案,希望它可以帮助其他人。基于django docs。
测试运行程序是定义run_tests()方法的类。 Django附带了一个DiscoverRunner类,该类定义了默认的Django测试行为。此类定义了run_tests()入口点,以及run_tests()用来设置,执行和拆除测试套件的其他方法的选择。
对于这个问题,该类中有2种有用的方法。setup_databases和teardown_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'