РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
759 of 818 menu

Класс LiveServerTestCase

Класс LiveServerTestCase является подклассом TransactionTestCase и предназначен для тестирования, которое требует запуска реального HTTP-сервера Django. Этот класс автоматически запускает встроенный сервер разработки в фоновом режиме перед выполнением тестов и останавливает его после завершения тестов. Сервер доступен по адресу 'localhost' на случайном свободном порту, что позволяет выполнять запросы к приложению из внешних клиентов, таких как Selenium, для проведения функционального тестирования в реальном браузере.

Синтаксис

from django.test import LiveServerTestCase class MyLiveTests(LiveServerTestCase): def test_example(self): pass

Пример

Создадим простой тестовый класс, который проверяет доступность главной страницы с использованием встроенного клиента Client через реальный сервер:

from django.test import LiveServerTestCase from django.test import Client from myapp.models import Article class MyLiveTests(LiveServerTestCase): def test_home_page(self): client = Client() response = client.get(self.live_server_url + '/') self.assertEqual(response.status_code, 200) self.assertContains(response, 'Welcome')

Результат выполнения кода:

"Test passed successfully"

Пример

Рассмотрим более сложный пример с использованием Selenium для проверки формы создания статьи. Для этого в тестовом методе создаётся объект веб-драйвера, который взаимодействует с реальным сервером:

from django.test import LiveServerTestCase from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from myapp.models import Article class SeleniumTests(LiveServerTestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(10) def tearDown(self): self.driver.quit() def test_create_article(self): self.driver.get(self.live_server_url + '/create/') title_field = self.driver.find_element(By.NAME, 'title') title_field.send_keys('Test Article') content_field = self.driver.find_element(By.NAME, 'content') content_field.send_keys('This is a test content') submit_button = self.driver.find_element(By.NAME, 'submit') submit_button.click() success_message = self.driver.find_element(By.CLASS_NAME, 'success') self.assertEqual(success_message.text, 'Article created successfully!') article = Article.objects.get(title='Test Article') self.assertIsNotNone(article)

Результат выполнения кода:

"Article created successfully!"

Пример

Пример использования атрибута live_server_url для формирования полного URL-адреса при тестировании AJAX-запросов из JavaScript:

from django.test import LiveServerTestCase from selenium import webdriver from selenium.webdriver.common.by import By from myapp.models import Category class AjaxTests(LiveServerTestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(5) def tearDown(self): self.driver.quit() def test_ajax_category_load(self): category = Category.objects.create(name='Technology') self.driver.get(self.live_server_url + '/categories/') load_button = self.driver.find_element(By.ID, 'load-categories') load_button.click() category_element = self.driver.find_element(By.CLASS_NAME, 'category-name') self.assertEqual(category_element.text, 'Technology')

Результат выполнения кода:

"Technology"

Смотрите также

  • класс TestCase,
    который обеспечивает изоляцию тестов с помощью транзакций
  • класс TransactionTestCase,
    который предоставляет более широкие возможности управления транзакциями
  • атрибут live_server_url,
    который содержит URL запущенного тестового сервера
  • класс Client,
    который эмулирует запросы клиента для тестирования представлений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить