2014-11-14 80 views
2

我不明白FactoryBoy + Django中的teardown是如何工作的。FactoryBoy:如何拆卸?

我有这样一个测试用例:

class TestOptOutCountTestCase(TestCase): 
    multi_db = True 

    def setUp(self): 
     TestCase.setUp(self) 
     self.date = datetime.datetime.strptime('05Nov2014', '%d%b%Y') 
     OptoutFactory.create(p_id=1, cdate=self.date, email='[email protected]', optin=1) 

    def test_optouts2(self): 
     report = ReportOptOutsView() 
     result = report.get_optouts() 
     self.assertEqual(len(result), 1) 
     self.assertEqual(result[0][5], -1) 

setUp是正确的所有测试运行一次?现在,如果我在进行第二次测试之前需要一个干净的状态,我该如何实现这一目标?谢谢

回答

3

如果我正确理解你,在这种情况下你不需要tearDown,因为在每次测试之间重置数据库是default behaviourTestCase

参见:

在每个测试用例的开始,设置()之前运行,Django会刷新数据库,该数据库恢复到它在迁移被称为直接后的状态。

...

这冲洗/加载程序重复测试情况下,每个测试,所以你可以肯定的是,测试的结果将不会被另一个测试受到影响,通过测试执行的顺序。

还是你的意思是通过OutputFactory限制创建实例到某些测试?

那么你可能不应该将实例的创建放入setUp

或者您创建TestCase的两个变体,一个用于所有依赖工厂的测试,另一个用于那些不需要的测试。


关于tearDown支票的用途这样的回答:Django when to use teardown method