Django功能测试:selenium.quit()不重置数据库?

时间:2016-09-29 09:16:03

标签: django selenium python-unittest

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)

当我运行测试时,

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

我不明白为什么每个测试函数的结果会影响其他测试函数(cart的{​​{1}})

我的期望:

id

1 个答案:

答案 0 :(得分:0)

这不是这里发生的事情。你的测试相互影响。

LiveServerTestcase是TransactionTestcase

的子类
  

TransactionTestCase在测试运行后重置数据库   截断所有表格。 TransactionTestCase可以调用commit和   回滚并观察这些调用对数据库的影响。

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

当您执行以下操作时,您只是打印出最近创建的模型的主键,并且一直在增加。

Permission

相反,你应该做的是

 print(cart.id)