Тестирование в 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)