Полный текст тестового задания - здесь
- Cкачать проект в локальную директорию. В текущей директории будет создана папка
tensor
git clone https://github.com/VitGT73/tensor.git
- Перейдите в папку с проектом:
cd tensor
- Создайте виртуальное окружение:
python -m venv .venv
или
python3 -m venv .venv
- Активируйте виртуальное окружение:
- на Windows:
.venv\Scripts\activate
- На macOS и Linux:
source .venv/bin/activate
- Установите зависимости. Обязательно убедитесь, что вы перед этим активировали виртуальное окружение:
pip install -r requirements.txt
- !!! ВАЖНО. На момент написания этого Readme. Самая последняя версия pytest==8.0.2. Более поздние, вплоть до 8.1.0 включительно, не корректно работали с Allure. Подробнее - тут
- Запуск тестов:
pytest
Для корректной работы тестов необходимо указать ваш домашний регион в файле core.config.settings.py
:
HOME_REGION = 'Ваш регион.'
. Например: HOME_REGION = 'Оренбургская обл.'
При необходимости можно изменить путь к локальной папке для загрузки файлов, сделав соответствующие изменения в модуле core.config.settings.py
:
# downloads path
DOWNLOAD_PATH:str = os.getcwd() + "/downloads"
Для ускорения выполнения тестов, а так же для запуска тестов в docker контейнере или CI/CD нужно отключить headless
режим. Для это нужно раскомментировать следующую строчку # options.add_argument("--headless")
в файле conftest.py
Если при попытке выполнить тесты в Браузере FireFox на Ubuntu выскакивает ошибка: "Your Firefox profile cannot be loaded. It may be missing or inaccessible." То необходимо переустановить FireFox, подробности тут и тут
- Запуск тестов с выгрузкой файлов для allure-отчета:
pytest --browser=chrome -sv --alluredir=allure-results
или для FireFox:
pytest --browser=firefox -sv --alluredir=allure-results
- Чтобы сохранялась история, перед генерацией отчета, необходимо в папку с результатами прогона скопировать историю из раннее сгенерированного отчета:
cp -R ./allure-report/history/ ./allure-results/history
- Генерация готового отчета выполняется командой:
allure generate --clean
- Сгенерированный отчет будет находиться в папке
allure-report
в файлеindex.html
- Команда
docker compose
(раздельно) используется в новых версиях Докера, в старых, необходимо использоватьdocker-compose
(через дефис)
Запуск docker-compose с условием его завершения одновременно с сервисом pytest
docker compose -f docs/docker-compose-hub-pytest.yml up --exit-code-from pytest
Будут выполнены тесты использующие сетку Selenium GRID и сформирован Аллюр-отчет в директории проекта.
docker compose -f docker-compose-hub.yml up --detach
Обратится к браузеру в Selenium GRID можно по адресу http://selenium-hub:4444/wd/hub
, например:
driver = webdriver.Remote(
command_executor="http://selenium-hub:4444/wd/hub", options=chrome_options
)
Остановка контейнеров:
docker compose -f docker-compose-hub.yml down
docker compose -f docker-compose-pytest.yml up --detach
Данный контейнер не содержит браузеров FireFox или Chrome поэтому для выполнения тестов нужен запущенный
docker-compose-hub.yml
.
Выполнить тесты внутри запущенного контейнера для браузера Chrome можно командой:
docker compose -f docker-compose-pytest.yml exec pytest pytest --browser=chrome -sv --alluredir=allure-results
Также доступны другие команды описанные выше:
Копирование истории:
docker compose -f docker-compose-pytest.yml exec pytest cp -R ./allure-report/history/ ./allure-results/history
Генерация отчета. Итоговый проект будет сформирован в папке проекта.
docker compose -f docker-compose-pytest.yml exec pytest allure generate --clean
Контейнеры докер по умолчанию выполняют все команды от имени root, в том числе создают папки с отчетами от его имени. Сбросить права root на эти папки можно следующей командой, которую также можем выполнить из Doker:
docker compose -f docker-compose-pytest.yml exec pytest /bin/sh -c 'chmod -R 777 allure-results allure-report'
- Умышленно не стал изменять В Докере пользователя root на обычного, потому что в противном случае будет не хватать прав при работе в github actions
Остановить контейнер
docker compose -f docker-compose-pytest.yml down
На сайте Github выполняем следующие действия:
- Создаем ветку(branch) -
gh-pages
. Проверяем что по адресуhttps://vitgt73.github.io/tensor/
открывается README.md репозитория. - Генерируем новый токен - тут
- В репозитории, выбираем Settings => Secrets and variables => Actions. Создаем новый секрет GHP_TOKEN (имя можно выбрать любое) и в его значение копируем только, что сгенерированный Токен. Сюда же будем добавлять Логин и Пароль при необходимости.
В локальной папке создаем папку ./.github/workflow
, в ней новый файл - config.yml
Ключевые моменты:
Для копирования файлов из ветки gh-pages
используем скрипт:
- name: Checkout (copy) gh-pages repository to GitHub runner
uses: actions/checkout@v3
with:
ref: gh-pages
path: ./.github/gh-pages
Для копирования папки с отчетами allure-report
в ветку gh-pages
используем скрипт, в нем мы используем сгенерированный раннее токен secrets.GHP_TOKEN
:
- name: Deploy to Github Pages
uses: JamesIves/[email protected]
with:
token: ${{ secrets.GHP_TOKEN }}
branch: gh-pages
folder: allure-report
clean: true
Запуск настроен по кнопке