2016-09-29 73 views
1
class FunctionalTest(LiveServerTestCase): 

    def setUp(self): 
     print("setUp") 
     self.browser = webdriver.Firefox() 
     self.browser.implicitly_wait(3) 

    def tearDown(self): 
     print("tearDown") 
     self.browser.quit() 


class MyTest(FunctionalTest): 

    def test1(self): 
     cart = Cart.objects.create() 
     print(cart.id) 

    def test2(self): 
     cart = Cart.objects.create() 
     print(cart.id) 

    def test3(self): 
     cart = Cart.objects.create() 
     print(cart.id) 

当我运行测试,Django功能测试:selenium.quit()不重置数据库?

setUp 
1 
tearDown 
.setUp 
2 
tearDown 
.setUp 
3 
tearDown 
. 
---------------------------------------------------------------------- 
Ran 3 tests in 7.024s 

我不明白为什么每个测试函数的结果影响到其他测试功能(cartid

我期待什么:

setUp 
1 
tearDown 
.setUp 
1 
tearDown 
.setUp 
1 
tearDown 
. 
---------------------------------------------------------------------- 
Ran 3 tests in 7.024s 

回答

0

这不是这里发生的事情。你的测试是而不是进入彼此的方式。

LiveServerTestcase是TransactionTestcase一个子类,并

通过 甲TransactionTestCase复位测试运行之后,数据库截断的所有表。 TransactionTestCase可能会调用commit和 回滚并观察这些调用对数据库的影响。

截断表不会重置自动计数器。默认情况下,所有的django模型都有一个自动递增的主键。

当你做对以下你只是打印出最近创建的模型的主键和日益增长的所有的时间。

print(cart.id) 

相反,你应该做的是

self.assertEqual(1,Cart.objects.count()) 
+0

啊......我不知道有关。什么宝贵的信息。谢谢。 – user3595632

+0

很高兴有帮助 – e4c5

相关问题