Skip to main content

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

gena_test_generator-0.0.4.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

gena_test_generator-0.0.4-py3-none-any.whl (31.1 kB view details)

Uploaded Python 3

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

Hashes for gena_test_generator-0.0.4.tar.gz
Algorithm Hash digest
SHA256 228e0c3650ee6762da711f20f4331b2f882ec4aeccd7acfde055325a6fef3ef7
MD5 5a806687ec789fce9a0a9ed47a76ad13
BLAKE2b-256 ac05228ca01e5397cb70b599860c55426b779306d1a9062e38708b8996b6e55c

See more details on using hashes here.

File details

Details for the file gena_test_generator-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for gena_test_generator-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 60cc4552e942385d774ec178e872e558f989d17a12589cd51040245a884b506d
MD5 587f5ccd3fa716cbb9b412e89d32954b
BLAKE2b-256 70a7c2c3e5e187671f207656d1886080d5df5c872ec9ae899b65c5a84a783b40

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page