2013-06-28 3 views
0

Я недавно переключился с использованием регулярных старых тестов с использованием WebTest и это «Нет Test Database Runner»Как мои тесты не влияют на базу данных ...?

from django.test.simple import DjangoTestSuiteRunner 

class NoTestDbDatabaseTestRunner(DjangoTestSuiteRunner): 
    def setup_databases(self, **kwargs): 
     pass 

    def teardown_databases(self, old_config, **kwargs): 
     pass 

Вот пример теста, который должен поражать базу как-то ...

Что происходит ? Могут ли мои тесты ударить по базе данных, но вернуться в какое-то старое состояние? Test-to-test Я вижу, что каждый созданный список имеет увеличенный id.

def test_image_upload(self): 
     form_data = self.listing_form_defaults.copy() 
     form_data['images-TOTAL_FORMS'] = '3' 

     upload_files = [ 
      ('images-0-image', 'testdata/1.png'), 
      ('images-1-image', 'testdata/2.png'), 
      ('images-2-image', 'testdata/3.png'), 
     ] 

     form_resp = self.app.post(
      reverse('listing_create'), 
      form_data, 
      upload_files=upload_files, 
      user='kmike' 
     ).follow() 

     assert len(form_resp.context['listing'].images.all()) == 3 

form_resp.context['listing'].images.all() ДОЛЖЕН ударять базу данных, я print «d это и имел запись базы данных из моей базы данных.

Я просто смущен - мои тесты запускаются быстро и, похоже, не меняют мою базу данных, как это работает/происходит ?!

+0

Джанго является открытым исходным кодом. погрузитесь в код, я буду держать пари, что это довольно очевидно. –

+0

Какая часть кода ............? –

ответ

0

Тесты, требующие базы данных (а именно, тесты модели), не будут использовать вашу «настоящую» (производственную) базу данных. Для тестов создаются отдельные пустые базы данных.

См Here

+0

База данных испытаний не создана. Мои тесты занимают около 1 секунды, где они занимают 2 минуты +! –