Django功能测试:selenium.quit()不';重置数据库?
当我运行测试时Django功能测试:selenium.quit()不';重置数据库?,django,selenium,python-unittest,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.
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)
我不明白为什么每个测试函数的结果都会影响其他测试函数(cart
的id
)
我所期望的是:
setUp
1
tearDown
.setUp
2
tearDown
.setUp
3
tearDown
.
----------------------------------------------------------------------
Ran 3 tests in 7.024s
这不是这里发生的事情。你的测试不是互相妨碍 LiveServerTestcase是和的子类 TransactionTestCase在通过运行测试后重置数据库 截断所有表。TransactionTestCase可以调用commit和 回滚并观察这些调用对数据库的影响 截断表不会重置自动icnrement计数器。默认情况下,所有django模型都有一个自动递增的主键 当您执行以下操作时,您只需打印出最近创建的模型的主键,并且一直在增加
setUp
1
tearDown
.setUp
1
tearDown
.setUp
1
tearDown
.
----------------------------------------------------------------------
Ran 3 tests in 7.024s
相反,你应该做的是
print(cart.id)
啊。。。我不知道那件事。。多么宝贵的信息啊。谢谢。很高兴能帮上忙
self.assertEqual(1,Cart.objects.count())