Тестирование в Django:
Пример запуска Теста (запустить все тесты находящиеся в папке users)
python manage.py test users
или
python3 manage.py test users
Пропустить отделную миграцию ("guides" - это название апликейшена):
python3 manage.py migrate --fake guides 0047_auto_20180307_0756
Или запустить определенную миграцию (ВНИМАНИЕ! ДАННЫЙ КОД МОНОЙ ЕЩЕ НЕ ПРОВЕРЕН):
manage.py migrate myapp 0005_migration_to_run
Примеры ТестКейсов (TestCase):
В самом начале создания Тесткейсов необходимо импортировать бибилитоеку:from django.test import TestCaseПосле чего можно приступать к созданию тестов.
Проверка статуса страницы
Статус 200 - Все Ок, страница открывается
Статус 302 - Идет редирект
class url_working_capacity (TestCase): def test_url_working_capacity (self): print("\nTEST #1") url = 'http://localhost:8000/en/guides/' response = self.client.get(url) self.assertEqual(response.status_code, 200) print("OK-1")
Залогинивание User'a - Вариант №1 (Через форму на сайте)
data = {'username': self.user#name, 'password': self.password} c = Client(enforce_csrf_checks=False) response = c.post(reverse("account_login"), data, follow=True) self.assertTrue(response.context["user"].is_authenticated())
Залогинивание User'a - Вариант №2 (програмно)
ccc = Client() self.assertTrue(ccc.login(username=self.username, password=self.password), True)
Вылогинивание User'a - Вариант №1 (Через ссылку / форму на сайте)
page_logout = 'http://localhost:8000/en/accounts/logout/' self.response = c.post(page_logout)
Вылогинивание User'a - Вариант №2 (програмно)
c.logout()
Создение User'a - Вариант №1 (програмно) - НО НЕ РАБОТАЕТ ПРИ ЗАЛОГИНИВАНИИ ЧЕРЕЗ ФОРМУ НА САЙТЕ
User.objects.create(username='test-user-2', email='ys.stepanenko@gmail.com', password='1qaz2wsx3edc') new_user = User.objects.get(username='test-user-2') print("NEW_USER ===", new_user.email)
Создение User'a - Вариант №2 (програмно) + РАБОТАЕТ ПРИ ЗАЛОГИНИВАНИИ ЧЕРЕЗ ФОРМУ НА САЙТЕ
self.new_user = User.objects.create(username='test-user-2') self.new_user.set_password('1qaz2wsx3edc') self.new_user.save() #CHEK new_user = User.objects.get(username='test-user-2') print("NEW_USER ===", new_user)