Pytest-bravado automatically generates client fixtures from OpenAPI specification. Bravado documentation.
Installation
To install pytest-bravado via pip run the following command:
pip install pytest-bravado
Example Usage
Simple tests:
import pytest
@pytest.mark.parametrize('getUser', [{'id': 1}], indirect=True)
def test_get_user(getUser):
assert getUser.result
@pytest.mark.parametrize('createUser', [{'id': 2, 'username': 'Ivan'}], indirect=True)
def test_create_user(createUser, getUser):
assert getUser(id=2).response().result
Support openapi example:
If there is an instance in the specifics, it will be used as the default request body.
parameters:
- in: "body"
name: "body"
schema:
$ref: "#/definitions/User"
example:
id: 10
username: Oleg
import pytest
def test_create_user(createUser):
assert createUser.response().result
request body:
{'id': 10, 'username': 'Oleg'}
You can use mark parametrize to change all or part of the example.
@pytest.mark.parametrize('createUser', [{'username': 'Ivan'}], indirect=True)
def test_create_user(createUser):
assert createUser.result
request body:
{'id': 10, 'username': 'Ivan'}
Run:
pytest --swagger_url http://user-service.com/swagger.json
Spec example:
swagger: "2.0"
info:
version: "1.0.0"
title: "User service"
host: "user-service.com"
schemes:
- "http"
paths:
/user{id}:
get:
operationId: "getUser"
parameters:
- in: "path"
name: "id"
required: true
type: "integer"
responses:
default:
description: "successful"
schema:
$ref: "#/definitions/User"
/createUser:
post:
operationId: "createUser"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
schema:
$ref: "#/definitions/User"
example:
id: 10
username: Oleg
responses:
default:
description: "successful"
definitions:
User:
type: "object"
properties:
id:
type: "integer"
username:
type: "string"
The following flags are supported
–swagger_url - openapi spec url
–request_headers - request headers
–not_validate_responses - not validate incoming responses
–not_validate_requests - not validate outgoing requests
–not_validate_swagger_spec - not validate the swagger spec
–not_use_models - not use models (Python classes) instead of dicts for #/definitions/{models}
–enable_fallback_results - use fallback results even if they’re provided
–response_metadata_class - What class to use for response metadata
Release files for pytest-bravado 1.0.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest-bravado-1.0.10.tar.gz | 3.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytest_bravado-1.0.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.3 kB
Release files / pytest-bravado-1.0.10.tar.gz
| Download URL | pytest-bravado-1.0.10.tar.gz |
|---|---|
| Size | 3.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
19eda7ca98453d4a200637de7aa0a24a74f8e61d7ff42a69b7677cce9fab0e62
|
|
BLAKE2b-256 checksum How to use checksums |
28bcbfaac67268323884a3aff5419d9b76f46766dc5ec2e17ae4200a5b84e74a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.11 CPython/3.10.0 Darwin/18.7.0
|
Release files / pytest_bravado-1.0.10-py3-none-any.whl
| Download URL | pytest_bravado-1.0.10-py3-none-any.whl |
|---|---|
| Size | 3.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bafbe49ff8a1669afbbf35f6c4f2258e28676f49a51e4165134bc6fd2754c7eb
|
|
BLAKE2b-256 checksum How to use checksums |
00dcd91a8410e9d502c2f648c75af0760898fa2704ac04e6677e351a00cb2090
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.11 CPython/3.10.0 Darwin/18.7.0
|