Лев Загрецкий Автоматизированное тестирование Python Инструкция или как пользоваться этим репозиторием
- Структура репозитория
- Как пользоваться репозиторием
- Окружение
- Подготовка проекта
- Выполнение домашнего задания
- Линтеры и Автотесты
- Как включить тесты для домашних работ
- Как запускать на локальной машине
Этот репозиторий был создан для студентов, которые хотят изучить автоматизированное тестирование на Python. Репозиторий имеет определенную структуру и правила, которым студенты должны следовать, чтобы все работало так, как это задумывалось.
/pyXX20XX
├── .github
│ ├── workflows <-- Здесь лежат файлы для проверки вашего кода и запуска автоматических тестов
│ │ ├── flake8.yaml
│ │ ├── ...
├── config
│ ├── tasks.json <-- Файл конфигурации для запуска автотестов
├── homeworks <-- Папка с домашними заданиями
│ ├── hw5 <-- Папка с домашним заданием #5
│ │ ├── hw5_solution.py <-- Файл с решением для домашнего задания #5
│ ├── ...
│ ├── hw7 <-- Папка с домашним заданием #7
│ │ ├── bulls_and_cows <-- Папка для 1й задачи домашнего задания #7
│ │ │ ├── hw7_solution.py <-- Файл с решением для домашнего задания #7
│ ├── ...
├── tests
│ ├── test_hw5.py <-- Тесты для домашнего задания #5
│ ├── ...
│ ├── test_hw7.py <-- Тесты для домашнего задания #7
│ ├── ...
├── .gitignore
├── README.md
├── conftest.py
├── requirements.txt
└── LICENSE
- Используйте этот репозиторий как темплейт для Вашего проекта. Для этого необходимо нажать на кнопку "Use this template", а потом "Create a new repository".
- Копия репозитория должна повиться у Вас в аккаунте GitHub.
- Сделайте clone Вашего репозитория на локальный компьютер.
$ git clone https://github.com/<user-name>/<repository>.git
(*)
Включить GitHub Actions, если они выключены. По умолчанию GitHub отключаетforkflows
в GitHub Action в репозиториях которые были форкнуты(fork
). Чтобы включитьforkflows
GitHub Action, откройте вкладку Actions вашего репозитория<repository>
и нажмите на большую зеленую кнопку:I understand my forkflows, go ahead and enable them
Все последующие шаги необходимо делать, только после того, как вы склонировали репозиторий на локальный компьютер.
- Перед началом использования создайте виртуальное окружение и установите необходимые зависимости
$ python3 -m venv ./venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements.txt
Рассмотрим на примере домашнего задания #5, она состоит из 10 задач. Для того чтобы сдать домашнюю работу - необходимо успешно выполнить все задания. Работа считается принятой - ВСЕ автоматические проверки прошли успешно.
- Создайте новую ветку
$ git checkout -b homework5
- Для выполнения, перейдите в папку
hw5
, она находится в папкеhomeworks
.
$ cd homeworks/hw5
- Создайте папку(-и) и файл, если их нету(для первых домашних работ они уже созданы). Для последующих домашних работ папки и файлы необходимо будет создавать самостоятельно.
$ mkdir hw5
$ cd hw5
$ touch hw5_solution.py
$ touch __init__.py
- Напишите решения задач
Пример: Вам необходимо разработать программу, которая добавляет ing
к словам
- В файле
hw5_solution.py
, найдите функциюadd_ing
def add_ing(s: str) -> str:
pass
- В переменную
s
будет передаваться строка к которой Вам надо будет добавить окончаниеing
- Удалите ключевое слово
pass
def add_ing(s: str) -> str:
- Напишите Ваш код, который будет решать эту задачу
def add_ing(s: str) -> str:
s += 'ing'
- Верните результат работы функции по средствам использования ключевого слова
return
def add_ing(s: str) -> str:
s += 'ing'
return s
- Запустите автотесты и линтеры
- Если все предыдущие проверки прошли успешно, то добавьте файл(изменения в нем) в отслеживаемые(индексируемые) Git
$ git add .
или
$ git add hw5_solution.py
- Зафиксируйте изменения по средством коммита
$ git commit -am <commit message>
- Загрузите изменения на СВОЙ удаленный репозиторий GitHub'a
$ git push -u origin homework5
- Создайте Pull Request
из рабочей ветки(
homework5
) в основную ветку(main
|master
) ВАШЕГО репозитория. Название pull request'a должно быть следующим:Homework5: <Name> <Surname>
- Подождите пока не пройдут(ушпешно!) все автоматические проверки
- Если все хорошо, то можете делать слияние ваших изменений в основную ветку репозитория
Note: Начиная с домашней работы #7, необходимо будет создавать вложенные папки, на пример: homeworks/hw7/bulls_and_cows.py
,
в которых и будет располагаться файлы с решениями для конкретной задачи.
Note 2: Вы всегда можете посмотреть на тесты(например HW#5: tests/test_hw5.py
), которые будут запускаться для проверки Вашей работы.
Note 3: Смотрите на импорты вверху модуля с тестами, они всегда подскажут Вам какая структура проекта, название модулей, функций, методов и классов ожидается.
(*)
Это действие должно было быть пройденным еще во время работы над HW#3, если вы уже это сделали, то сейчас его можно пропустить.
Для упрощения и большей автоматизации, в репозитории лежит скрипт run_all.sh
который умеет запускать линтеры и автоматичесике тесты на локальном компьютере,
так что Вы еще до создания pull request'a сможете посмотреть что и где надо исправить.
Прочитайте пару статей про линтеры и зачем они нужны:
- https://habr.com/ru/companies/oleg-bunin/articles/433480/
- https://semakin.dev/2020/05/python_linters/
Тесты включаются посредством флага в файле config/tasks.json
. Перед запуском тестов PyTest считывает, файл конфигурации и по необходимости отключает необходимый модуль.
"hw5": true
- включает тесты для домашней работы #5"hw5": false
- выключает тесты для домашней работы #5
- Для того чтобы все работало, Вам необходимо находиться в ветке
homework5
- Необходимо дать права на выполнение скрипту
$ chmod +x run_all.sh
- Запустить скрипт
$ ./run_all.sh