April 1, 2019

Добавляем тестирование, через UnitTest, создаём UML диаграмму для наглядности

Сделаем тест на проверку заголовка, только другим способом. Средствами UnitTest. Для этого в папке itpavel_test создадим ещё один файл. Я назвал его functional_test.py.

Логика в файле такая:

  1. Импортируем unittest для проведения теста.
  2. Импортируем Selenium для создания браузера.
  3. Создадим класс, имя которого будет кончаться на Test. Этот класс будет наследоваться от unittest.TestCase и в нём будет описана логика тестов.
  4. В классе пропишем метод SetUp, в нём будет прописано то, что происходит ДО теста. Нам надо что бы браузер создавался.
  5. Чуть ниже пропишем метод tearDown, он описывает то, что происходит после теста. Независимо от результата. В нашем случае - закрытие браузера.
  6. И наконец, сама функция тестирования. Она перейдёт по нужному url и сравнит заголовки. Если не равны - вызовет исключение. Если равны, то всё окей.
  7. Пропишем условие, что если этот файл не импортируется как модуль, а запускается как __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/