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.3.tar.gz (22.4 kB view hashes)

Uploaded Source

Built Distribution

gena_test_generator-0.0.3-py3-none-any.whl (30.9 kB view hashes)

Uploaded Python 3

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