Skip to main content

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.

Note: OpenApiDriver is designed for APIs based on the OAS v3 The library has not been tested for APIs based on the OAS v2.


Getting started

Before trying to use OpenApiDriver to run automatic validations on the target API it's recommended to first ensure that the openapi document for the API is valid under the OpenAPI Specification.

This can be done using the command line interface of a package that is installed as a prerequisite for OpenApiDriver. Both a local openapi.json or openapi.yaml file or one hosted by the API server can be checked using the prance validate <reference_to_file> shell command:

prance validate http://localhost:8000/openapi.json
Processing "http://localhost:8000/openapi.json"...
 -> Resolving external references.
Validates OK as OpenAPI 3.0.2!

prance validate /tests/files/petstore_openapi.yaml
Processing "/tests/files/petstore_openapi.yaml"...
 -> Resolving external references.
Validates OK as OpenAPI 3.0.2!

You'll have to change the url or file reference to the location of the openapi document for your API.

If the openapi document passes this validation, the next step is trying to do a test run with a minimal test suite. The example below can be used, with source and origin altered to fit your situation.

*** Settings ***
Library            OpenApiDriver
...                    source=http://localhost:8000/openapi.json
...                    origin=http://localhost:8000
Test Template      Validate Using Test Endpoint Keyword

*** Test Cases ***
Test Endpoint for ${method} on ${endpoint} where ${status_code} is expected

*** Keywords ***
Validate Using Test Endpoint Keyword
    [Arguments]    ${endpoint}    ${method}    ${status_code}
    Test Endpoint
    ...    endpoint=${endpoint}    method=${method}    status_code=${status_code}

Running the above suite for the first time is likely to result in some errors / failed tests. You should look at the Robot Framework log.html to determine the reasons for the failing tests. Depending on the reasons for the failures, different solutions are possible.

Details about the OpenApiDriver library parameters that you may need 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 the id property on a resource of that type.
  • Limited support for query strings and headers.
  • Limited support for authentication
    • username and password 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).
  • byte, binary, date, date-time string formats not supported yet.

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

robotframework-openapidriver-3.1.0.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file robotframework-openapidriver-3.1.0.tar.gz.

File metadata

File hashes

Hashes for robotframework-openapidriver-3.1.0.tar.gz
Algorithm Hash digest
SHA256 895c678187891f72b989b38a0947b9712edc99d89dd3b36ccf3588bf44dbfff0
MD5 b034c1e4f2f2d34315b630fee3cb5207
BLAKE2b-256 19595436c9796104db0fb61b95ba9d56001124104f2a72bb257b2a4aa1e9936e

See more details on using hashes here.

File details

Details for the file robotframework_openapidriver-3.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for robotframework_openapidriver-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ac9b25daf7aff10d0187e5757cf3185c0616b87a40c2c8a5a7e56c0c61cda42
MD5 7c53ea7317f66e48de6e1b288b027efc
BLAKE2b-256 da6a153af23040bb94b155f95ac3715a297f55d14aa413faeb229f80fff0ddd3

See more details on using hashes here.

Supported by

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