Skip to main content

Provides steps for a Gauge project, that runs tests against APIs

Project description

Gauge API Steps

License: MIT Python 3.10 Gauge XPath JSONPath OpenSSF Scorecard

A Python module, that provides re-usable steps for testing APIs with the Gauge framework.

Description

This is an extensible and flexible test-automation library for Gauge. It enables users with and without programming knowledge to create end-to-end test scenarios in Markdown syntax. Developers can still easily extend their test scenarios with custom code. Python's urllib is used to make requests against APIs. XML and JSON are supported and API responses can be validated with XPath and JSONPath.

Gauge Step Overview

Find the documentation on all Gauge steps of this project in the overview:

Gauge Step Overview

Quick Start

This is a library for the Gauge framework, so Gauge+Python must be installed first.

It is useful to understand the basic workings of Gauge first. The documentation is excellent.

  • Install this module
  • Find out the path to this module after installation:
    echo $( python -m site --user-site )/gauge_api_steps
    
  • Add that path to the property STEP_IMPL_DIR inside the test project file env/default/python.properties. Paths to multiple modules are comma separated.
    Example on a Mac:
    STEP_IMPL_DIR = /Users/<user>/Library/Python/3.10/lib/python/site-packages/gauge_api_steps, step_impl
    
  • Reload Visual Studio Code
  • Write a new scenario in specs/example.spec. VSC offers auto-completion

Installation

This module can be installed from source:

cd path/to/gauge-api-steps
pip install --user .

Or the latest package can be downloaded and installed from PyPi:

pip install gauge-api-steps --user --upgrade

Development

When coding on this project, unit tests can be executed like this:

python -m unittest discover -v -s tests/ -p 'test_*.py'

Contributions are welcome.

Expressions in Parameters

Property Placeholders

Step parameters allow the use of placeholders, that can be defined in the Gauge environment properties files. Some steps also allow to set a placeholder value manually. Property keys act as placeholders, they are defined like ${key}. They will be replaced by its value if such a property key/value pair exists in any env/*/*.properties file or within the execution scope.

Mathematical Expressions

Mathematical expressions can also be evaluated. For example: #{5 + 5 * 5} is evaluated to 30.

It is possible to combine the two features. Placeholder substitution takes place before mathematical expression evaluation.

Functional Expressions

Functional expressions will generate a result during step execution. There are different expressions:

  • UUID generation: !{uuid}
  • Time: !{time}, !{time:%Y-%m-%d}. The time format is optional. If omitted, ISO format will be used. The time format pattern is described in the Python language documentation.
  • Load content from text file: !{file:resources/file.json} The File must be inside the project directory.
  • Load graphQL from file: !{gql:resources/file.gql} or !{graphql:resources/file.gql} This will automatically generate the JSON format, that can be used in the request body.

Expression Examples

Note that the property expressions start with $, mathematical expressions with #, and functional expressions with !.

The property "homepage_url" can be defined in env/default/test.properties like this:

homepage_url = https://my-app.net

* Request "GET" "${homepage_url}/home"

* Print "5 + 6 = #{5 + 6}"

It is also possible to define a property in a step:

* Store "addend" "5"

* Print "5 + 5 * 5 = #{$addend + 5 * 5}"

And also to create new properties from old:

* Store "new_url" "${base_url}/id=!{uuid}&created=!{time}"

* Print "!{uuid}"

* Print "!{time}"

* Print "!{time:%Y-%m-%d}"

* With body "!{file:resources/request.json}"

* With body "!{file:resources/request.xml}"

* With body "!{gql:resources/request.gql}"

Internal Placeholders

Following placeholders are used internally to store data over multiple steps:

  • _opener
  • _response_csrf_header
  • _request_csrf_header
  • _csrf_value
  • _body
  • _response
  • _headers

It is possible to access and manipulate them with certain steps.

Configuration

The Configuration follows the Gauge configuration approach. Some behaviour can be determined with properties.

Configuration Overview

Maintainers

Maintainers

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

gauge-api-steps-0.20.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

gauge_api_steps-0.20-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file gauge-api-steps-0.20.tar.gz.

File metadata

  • Download URL: gauge-api-steps-0.20.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.10

File hashes

Hashes for gauge-api-steps-0.20.tar.gz
Algorithm Hash digest
SHA256 5a1e23a2558a5c0181aaa906ce25ff1b34a932c1633e86a83214e29e9a0a39f7
MD5 7b65eec77085c29fe29811cabcaf29aa
BLAKE2b-256 d331dfa2b9f49db7276f917d6d089bdda074d9202b8f835e339c6c21e54e7772

See more details on using hashes here.

File details

Details for the file gauge_api_steps-0.20-py3-none-any.whl.

File metadata

File hashes

Hashes for gauge_api_steps-0.20-py3-none-any.whl
Algorithm Hash digest
SHA256 2e1acfa45bf295d172857893d659cc03969139779c3dfaeaf9ad76789dd107ac
MD5 88beba6499342a7535b5d6a3cff9ee9a
BLAKE2b-256 8f5a8ca01a72d6455f9c9c222e333360be9584fa5369f7f4cebd89412b09d6cd

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