Усовершенствуем тестирование и выложим проект на GitHub #2
Этот урок посвящён усовершенствованию нашего теста. Проблема такая:
- Тест запускает браузер
- Сравнивает title сайта с заданным текстом
- Если всё хорошо и тест PASSED, то браузер закрывается
- Если тест FAILED (провален), то браузер на данный момент у нас не закрывается. Это не правильно
Давайте решим эту проблему.
Сверху в окошечке (в PyCharm) отредактируем конфигурацию.
Слева сверху от кода находим окно прямоугольной формы с названием нашего файла (red_test.py). Нажимаем стрелочку вниз, в выпадающем меню выбираем Edit Configurations...
В появившемся окне сверху слева выбираем плюс, что бы добавить новую конфигурацию, и из выпадающего списка выбираем последовательно: Python tests -> Pytest.
В открывшемся окне заполняем:
Name: run_test (имя нашей конфигурации)
Target: C:/Users/admin/Desktop/ITPavel Project/itpavel_test/red_test.py (путь к файлу с нашими тестами)
Additional Arguments: -vs (ключи, которые будут переданы в качестве параметров. О них поговорим подробнее позже)
Жмём apply, OK. Теперь над кодом сверху слева, в окошечке должно быть run_test, и если мы запустим эту конфигурацию, заработает тестирование. Отлично! Теперь не надо в консоли писать:
pytest -vs red_test.py
Одной проблемой меньше. Теперь вторая проблема. Если сработало исключение, наш браузер не закрывался. Давайте импортируем в наш код pytest, создадим фикстуру, возвращающую объект веб-браузера, затем закрывающую его (в виде декоратора). И создадим функцию (имя её должно начинаться со слова test_), которая принимает в качестве параметра веб-браузер, переходит по ссылке и выполняет assert (проверку). Получилось так:
from selenium import webdriver
import pytest
@pytest.fixture()
def browser():
browser = webdriver.Chrome('chromedriver_win32\chromedriver.exe')
yield browser
browser.quit()
def test_title(browser):
browser.get('http://127.0.0.1:8000/home/')
assert browser.title == 'ITPavel'
Отлично! Теперь при любом из возможных вариантов, наш браузер будет закрыт. Удобно.
Давайте зальем наш проект на github. Подробное знакомство с git (система контроля версий), залью позже. Итак, перейдём в папку с проектом, (ITPavel Project), инициализируем новый гит и посмотрим что можно закоммитить:
git init git status
Весь мусор, типа кэша, настроек PyCharm виртуальной среды, нам в гите не нужен. Поэтому создадим файл .gitignore и запишем в него то, чего не желаем видеть нашем репозитории:
.idea .pytest_cache __pycache__/ project_venv
Супер, теперь выгрузим из pip зависимости (то, что мы установили):
pip freeze > reqirements.txt
Осталось добавить всё остальное к коммиту и закоммитить с пометкой, что это начало проекта:
git add . git commit -m "Start project"
Осталось засинхронизировать наш проект с GitHub:
- Регистрируемся на github
- Создаем репозиторий
- Добавляем в наш гит удалённый репозиторий и пушим изменения:
git remote add origin https://github.com/*гusername*/*reponame*.git git push -u origin master
Готово! Теперь наш проект доступен другим разработчиком. Полный и актуальный код проекта вы можете наблюдать в моё репозитории.