Полный текст тестового задания - здесь
- 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 downdocker 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Запуск настроен по кнопке