A library for contract-testing OpenAPI / Swagger APIs.
Project description
OpenApiDriver for Robot Framework®
OpenApiDriver is an extension of the Robot Framework® DataDriver library that allows for generation and execution of test cases based on the information in an OpenAPI document (also known as Swagger document). This document explains how to use the OpenApiDriver library.
For more information about Robot Framework®, see http://robotframework.org.
For more information about the DataDriver library, see https://github.com/Snooz82/robotframework-datadriver.
Note: OpenApiDriver is currently in early development so there are currently restrictions / limitations that you may encounter when using this library to run tests against an API. See Limitations for details.
Installation
If you already have Python >= 3.8 with pip installed, you can simply run:
pip install --upgrade robotframework-openapidriver
OpenAPI (aka Swagger)
The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs, see https://swagger.io/specification/
The OpenApiDriver module implements a reader class that generates a test case for each endpoint, method and response that is defined in an OpenAPI document, typically an openapi.json or openapi.yaml file.
How it works
If the source file has the .json or .yaml extension, it will be loaded by the library (using the prance library under the hood) and the test cases will be generated.
*** Settings ***
Library OpenApiDriver
... source=openapi.json
Test Template Do Nothing
*** Test Cases ***
Some OpenAPI test for ${method} on ${endpoint} where ${status_code} is expected
*** Keywords *** ***
Do Nothing
[Arguments] ${endpoint} ${method} ${status_code}
No Operation
It is also possible to load the openapi.json / openapi.yaml directly from the server by using the url instead of a local file:
*** Settings ***
Library OpenApiDriver
... source=http://127.0.0.1:8000/openapi.json
Since the OpenAPI document is essentially a contract that specifies what operations are supported and what data needs to be send and will be returned, it is possible to automatically validate the API against this contract. For this purpose, the openapi module also implements a number of keywords.
Details about the Keywords can be found here.
The OpenApiDriver also support handling of relations between resources within the scope
of the API being validated as well as handling dependencies on resources outside the
scope of the API. In addition there is support for handling restrictions on the values
of parameters and properties.
Details about the mappings_path
variable usage can be found
here.
Limitations
There are currently a number of limitations to supported API structures, supported data types and properties. The following list details the most important ones:
- Only JSON request and response bodies are currently supported.
- The unique identifier for a resource as used in the
paths
section of the openapi document is expected to be theid
property on a resource of that type. - Limited support for query strings.
- No support for headers at this time.
- Limited support for authentication
username
andpassword
can be passed as parameters to use Basic Authentication- A requests AuthBase instance can be passed and it will be used as provided.
- No support for per-endpoint authorization levels (just simple 401 validation).
exclusiveMinimum
andexclusiveMaximum
not supported yet.- byte, binary, date, date-time string formats not supported yet.
Project details
Release history Release notifications | RSS feed
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
Hashes for robotframework-openapidriver-2.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e87a5ffa73a6ea8852cea0fe6d9557127c53e4d32233d7ef7fe88a0d59af35e |
|
MD5 | 127735fb14b9ac6422dc14e7311e85f0 |
|
BLAKE2b-256 | 051ef927a1e8a154e5968c882e93d6143ca85708030b52dd747f4b8d51209a40 |
Hashes for robotframework_openapidriver-2.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 020f1d3c07409ced0fb6e7ff35a057a71abdbe6b211ff204b37d55ef67060c8b |
|
MD5 | e2548504b04f674ba69820e27a8d81e1 |
|
BLAKE2b-256 | 80797e2ab4c228c529a32702b32cfe64b4757e6fe5c3e7bb966f85d5c3c4f6b4 |