April 1, 2019
Добавляем тестирование, через UnitTest, создаём UML диаграмму для наглядности
Сделаем тест на проверку заголовка, только другим способом. Средствами UnitTest. Для этого в папке itpavel_test создадим ещё один файл. Я назвал его functional_test.py.
Логика в файле такая:
- Импортируем unittest для проведения теста.
- Импортируем Selenium для создания браузера.
- Создадим класс, имя которого будет кончаться на Test. Этот класс будет наследоваться от unittest.TestCase и в нём будет описана логика тестов.
- В классе пропишем метод SetUp, в нём будет прописано то, что происходит ДО теста. Нам надо что бы браузер создавался.
- Чуть ниже пропишем метод tearDown, он описывает то, что происходит после теста. Независимо от результата. В нашем случае - закрытие браузера.
- И наконец, сама функция тестирования. Она перейдёт по нужному url и сравнит заголовки. Если не равны - вызовет исключение. Если равны, то всё окей.
- Пропишем условие, что если этот файл не импортируется как модуль, а запускается как __main__, то выполняем тестирование.
Полный код, того что я сейчас описал:
import unittest
from selenium import webdriver
class NewClientTest(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Chrome('chromedriver_win32\chromedriver.exe')
def tearDown(self):
self.browser.quit()
def test_title(self):
self.browser.get('http://127.0.0.1:8000/home/')
self.assertEqual('ITPavel', self.browser.title)
if __name__ == '__main__':
unittest.main()
В случае ошибки мы увидим:
Ran 1 test in 5.792s FAILED (failures=1) 127.0.0.1 != ITPavel Expected :ITPavel Actual :127.0.0.1
В случае, если всё хорошо:
Ran 1 test in 4.398s OK
Для наглядности, я добавляю UML диаграмму, сделанную на сайте https://www.draw.io/