2016-09-29 5 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 

Я не понимаю, почему результат любой пробной функции влияют другие функции тестирования (cart «ы id)

Что я ожидал:

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

ответ

0

Это не то, что здесь происходит. Ваши тесты: не в порядке друг друга.

LiveServerTestcase подкласс TransactionTestcase и

TransactionTestCase сбрасывает базу данных после тестовых запусков с помощью усечения всех таблиц. TransactionTestCase может вызывать фиксацию и откат и наблюдать за эффектами этих вызовов в базе данных.

Усеченные столы не сбрасывают счетчик автоконтактов. По умолчанию все модели django имеют автоматически увеличивающий первичный ключ.

Когда вы делаете следующее, вы просто распечатываете первичный ключ самой недавно созданной модели и все это время увеличивается.

print(cart.id) 

Вместо того, что вы должны сделать, это

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

Ах ... Я не знал об этом .. Какая ценная информация. Благодарю. – user3595632

+0

Рад помочь – e4c5

 Смежные вопросы

  • Нет связанных вопросов^_^