Skip to content
/ tensor Public

Тестовое задание на позицию разработчика в тестировании (Программист-тестировщик)

Notifications You must be signed in to change notification settings

VitGT73/tensor

Repository files navigation

Тестовое задание на позицию разработчика в тестировании (Программист-тестировщик).

Полный текст тестового задания - здесь

Установка

  1. Cкачать проект в локальную директорию. В текущей директории будет создана папка tensor
git clone https://github.com/VitGT73/tensor.git
  1. Перейдите в папку с проектом:
cd tensor
  1. Создайте виртуальное окружение:
python -m venv .venv

или

python3 -m venv .venv
  1. Активируйте виртуальное окружение:
  • на Windows:
.venv\Scripts\activate
  • На macOS и Linux:
source .venv/bin/activate
  1. Установите зависимости. Обязательно убедитесь, что вы перед этим активировали виртуальное окружение:
pip install -r requirements.txt
  • !!! ВАЖНО. На момент написания этого Readme. Самая последняя версия pytest==8.0.2. Более поздние, вплоть до 8.1.0 включительно, не корректно работали с Allure. Подробнее - тут
  1. Запуск тестов:
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 отчет

  1. Запуск тестов с выгрузкой файлов для allure-отчета:
pytest --browser=chrome -sv --alluredir=allure-results

или для FireFox:

pytest --browser=firefox -sv --alluredir=allure-results
  1. Чтобы сохранялась история, перед генерацией отчета, необходимо в папку с результатами прогона скопировать историю из раннее сгенерированного отчета:
cp -R ./allure-report/history/ ./allure-results/history
  1. Генерация готового отчета выполняется командой:
allure generate --clean
  1. Сгенерированный отчет будет находиться в папке allure-report в файле index.html

Запуск тестов через Docker-compose

  • Команда 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

Запуск docker-compose для 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

Запуск контейнера с предустановленными Python, Pytest и Allure:

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

Запуcк в Github actions

На сайте 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

Запуск настроен по кнопке

About

Тестовое задание на позицию разработчика в тестировании (Программист-тестировщик)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published