Narzędzia użytkownika

Narzędzia witryny


wiki:django_tests

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Ostatnia wersjaNastępna rewizja po obu stronach
wiki:django_tests [2022/08/18 11:44] – edycja zewnętrzna 127.0.0.1wiki:django_tests [2022/12/02 20:38] – użycie dedykowanej bazy testowej lukasz
Linia 260: Linia 260:
     self.assertContains(response, past_question.question_text)     self.assertContains(response, past_question.question_text)
 </code> </code>
 +
 +
 +----
 +
 +===== Zapisywanie do bazy danych w testach Django =====
 +
 +Dodatkowa baza danych w pliku settings.py. Ważne jest, by baza wykorzystywana do testów miała zdefiniowaną samę siebie jako bazę testową.
 +
 +<code>
 +DATABASES = {
 +    'default': {
 +        'ENGINE': 'django.db.backends.mysql',
 +        'NAME': 'produkcja',
 +        'USER': 'produkcja',
 +        'PASSWORD': 'qwerty123',
 +        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
 +        'PORT': '3306',
 +      },
 +    'TEST': {
 +        'ENGINE': 'django.db.backends.mysql',
 +        'NAME': 'testowa',
 +        'USER': 'testowa',
 +        'PASSWORD': 'qwerty234',
 +        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
 +        'PORT': '3306',
 +        'TEST': {'NAME': 'testowa'}
 +    }
 +}
 +</code>
 +
 +W pliku tests.py należy utworzyć klasę dziecziczącą po TestCase i zdefiniować używaną bazę danych. Jej nazwa może być dowolna:
 +
 +  class TestCaseD(TestCase):
 +    databases = {'default' ,'TEST'}
 +
 +Wszystkie testy muszą być egzamplarzami klasy TestCaseD.
 +
 +Wszystkie "ręczne" zapisy do bazy danych w pliku (lub plikach) tests.py należy opatrzyć parametrem //using//:
 +
 +  jakis_obiekt.save(using='TEST')
 +
 +Należy utworzyć bazę danych //testowa//, użytkownika //testowa// oraz nadać mu pełne uprawnienia do wszystkich tabel.
 +
 +Teraz można uruchomić testy. Agrument //--keepdb// jest opcjonalny i pozwala na przejrzenie zawartości bazy danych //testowa// po zakończeniu testów automatycznych. Oczekiwany efekt:
 +
 +<code>
 +python manage.py migrate --database TEST
 +[Applying contenttypes.0001_initial... OK] [...]
 +
 +python manage.py test --debug-mode --keepdb
 +Found 18 test(s).
 +Using existing test database for alias 'default'...
 +Using existing test database for alias 'TEST'...
 +System check identified no issues (0 silenced).
 +..........
 +........
 +----------------------------------------------------------------------
 +Ran 18 tests in 6.086s
 +
 +OK
 +Preserving test database for alias 'default'...
 +Preserving test database for alias 'TEST'...
 +</code>
 +
 +Po każdym wykonaniu testów bez parametru //--keepdb// należy ponownie utworzyć testową bazę danych oraz wykonać migrację.
  
wiki/django_tests.txt · ostatnio zmienione: 2022/12/04 13:17 przez lukasz

Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki