Скрипт для генерации файлов с тестами на основе текстовых сценариев.
Features
- Генерация шаблонных тестов на основе сценариев, описанных в .md формате;
- Поддержка кастомных шаблонов тестов;
- Генерация имен тестов при помощи ChatGPT;
- Обратная генерация .md файла на основе файлов тестов;
- Генерация интерфейса для тестов на основе Swagger документации;
- Генерация схем для тестов на основе Swagger документации;
Getting Started
WD - текущая директория
Step 1. Создать новый md-файл со сценариями
Генерация нового md-файла со сценариями в WD:
gena --md-example --md-format=md_table_format
Step 2. Создать py-файлы по сценариям
Генерация py-файлов в WD без использования интерфейса по md-файлу со сценариями в WD:
gena --template-path=$(pwd)/templates/test_template.txt
Step 3. Создать md-файл со сценариями по py-файлам
Cгенерировать md-файл в WD по уже имеющимся тестам в TARGET_DIR и сабдиректориях:
gena --reversed --target-dir TARGET_DIR
Использование AI
Для генерации имен тестов можно использовать AI ChatGPT
Для того чтобы имена тестов были сгенерированы AI:
- запустить скрипт генерации py файлов с ключом
--ai; - в файле сценариев поле subject должно быть не заполнено;
- должны быть определены env переменные
OPENAI_API_KEY&OPENAI_URL.
gena --template-path=$(pwd)/templates/test_template.txt --ai
Форматы md-файлов
- В виде списка:
--md-format=md_list_format - В виде таблицы:
--md-format=md_table_format
Кастомные шаблоны для генерации тестов
Скрипт может использовать кастомные шаблоны для генерации тестов (см. /templates)
При описании сценариев в форматах md_list_format & md_table_format в шаблоне доступны следующие переменные:
{{ test_scenarios }}- массив тестов.
Каждый объект scenario из массива test_scenarios имеет следующие поля:
{{ scenario.priority }}- приоритет теста;{{ scenario.subject }}- имя теста;{{ scenario.description }}- описание теста;{{ scenario.expected_result }}- ожидаемый результат теста;{{ scenario.is_positive }}- признак позитивности теста;{{ scenario.params }}- массивstrпараметров теста.
При описании сценариев в .md файле можно объявить переменные (в формате **var_name** = var_value), которые могут быть использованы в шаблоне тестов, например:
**feature** = my_feature_value
Использование в шаблоне:
This test is from {{ suite_data['feature'] }} feature
Генерация api интерфейса и схемы:
tests- для генерации тестов;interface- для генерации интерфейса;schemas- для генерации схем;
Для этого нужно указать флаг --generate, и указать нужные нам варианты генерации. Например мы хотим сгенерировать тесты и интерфейс.
gena --generate=tests,interface --scenarios-path=$(pwd) --template-path=$(pwd) --yaml-path=$(pwd) --interface-path=$(pwd)
А если нам нужно сгенерировать всё: тесты, интерфейс, схемы
gena --generate=tests,interface,schemas --scenarios-path=$(pwd) --template-path=$(pwd) --yaml-path=$(pwd) --interface-path=$(pwd) --schemas-path=$(pwd)
Также мы можем генерировать что-то по отдельности, просто укажите что вам нужно!
gena --generate=tests --scenarios-path=$(pwd) --template-path=$(pwd)
gena --generate=interface --scenarios-path=$(pwd) --yaml-path=$(pwd), --interface-path=$(pwd)
gena --generate=schemas --scenarios-path=$(pwd) --yaml-path=$(pwd) --schemas-path=$(pwd)
Help
usage: gena [-h] [--scenarios-path SCENARIOS_PATH] [--template-path TEMPLATE_PATH] [--api-template-path API_TEMPLATE_PATH] [--target-dir TARGET_DIR] [--md-example] [--ai] [--md-format MD_FORMAT] [--force]
[--reversed] [--generate GENERATE] [--yaml-path YAML_PATH] [--interface-path INTERFACE_PATH] [--schemas-path SCHEMAS_PATH]
Parse scenario file and generate scenario files from template.
options:
-h, --help show this help message and exit
--scenarios-path SCENARIOS_PATH
Path to the scenario file. Defaults to scenarios.md in the current directory.
--template-path TEMPLATE_PATH
Path to the test template file (used for tests generation).
--api-template-path API_TEMPLATE_PATH
Path to the api template file (used for api generation).
--target-dir TARGET_DIR
Directory to put or read generated test files. Defaults to the directory of scenarios-path.
--md-example Generate new md-file with scenarios.
--ai Use AI to generate test file names and subjects for tests (if not exsists).
--md-format MD_FORMAT
Name of the format to use. Available scenarios.md formats are: md_list_format, md_table_format
--force Force overwrite existing files.
--reversed Create scenarios file from test files.Tests should have same story and feature.
--generate GENERATE List of generate. Available components are: tests, interface, schemas. Example: tests,interface,schemas - generate all, tests - generate only tests. Delimiter - ","
--yaml-path YAML_PATH
Path to the swagger yaml file. Used for interface generating.
--interface-path INTERFACE_PATH
Path to the interface file. Used for interface generating.
--schemas-path SCHEMAS_PATH
Path to directory containing schemas. User for schemas generating.
Metadata
Release files for gena-test-generator 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gena_test_generator-0.0.4.tar.gz | 22.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gena_test_generator-0.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.7 kB
Release files / gena_test_generator-0.0.4.tar.gz
| Download URL | gena_test_generator-0.0.4.tar.gz |
|---|---|
| Size | 22.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
228e0c3650ee6762da711f20f4331b2f882ec4aeccd7acfde055325a6fef3ef7
|
|
BLAKE2b-256 checksum How to use checksums |
ac05228ca01e5397cb70b599860c55426b779306d1a9062e38708b8996b6e55c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.15
|
Release files / gena_test_generator-0.0.4-py3-none-any.whl
| Download URL | gena_test_generator-0.0.4-py3-none-any.whl |
|---|---|
| Size | 31.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
60cc4552e942385d774ec178e872e558f989d17a12589cd51040245a884b506d
|
|
BLAKE2b-256 checksum How to use checksums |
70a7c2c3e5e187671f207656d1886080d5df5c872ec9ae899b65c5a84a783b40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.15
|