Script for generating tests from Markdown files
Project description
Скрипт для генерации файлов с тестами на основе текстовых сценариев.
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gena_test_generator-0.0.4.tar.gz
.
File metadata
- Download URL: gena_test_generator-0.0.4.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 228e0c3650ee6762da711f20f4331b2f882ec4aeccd7acfde055325a6fef3ef7 |
|
MD5 | 5a806687ec789fce9a0a9ed47a76ad13 |
|
BLAKE2b-256 | ac05228ca01e5397cb70b599860c55426b779306d1a9062e38708b8996b6e55c |
File details
Details for the file gena_test_generator-0.0.4-py3-none-any.whl
.
File metadata
- Download URL: gena_test_generator-0.0.4-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60cc4552e942385d774ec178e872e558f989d17a12589cd51040245a884b506d |
|
MD5 | 587f5ccd3fa716cbb9b412e89d32954b |
|
BLAKE2b-256 | 70a7c2c3e5e187671f207656d1886080d5df5c872ec9ae899b65c5a84a783b40 |