A Python module for using the Specmatic Library.
Project description
This is a Python library to run the Specmatic library. Specmatic is a contract driven development tool that allows us to turn OpenAPI contracts into executable specifications.
-
The specmatic python library is geared towards integrating Specmatic capabilities in PyTest tests. It provides three main function:
- The ability to start and stop a python flask app in a test class
- The ability to run specmatic in test mode against a local contract/spec file, or against a spec defined in a Central Contract Repository (as defined in specmatic.json).
- The ability to stub out an api dependency using the specmatic stub feature.
-
To run Specmatic in test mode against a flask app, add the start_flask_app and specmatic_contract_test decorator functions on your test class:
@specmatic_contract_test(host, port, specmatic_json_file) @start_flask_app(app, host, port) class TestApiContract: @classmethod def teardown_class(cls): cls.flask_server.stop()
- The @start_flask_app decorator adds an attribute 'flask_server' on the test class, which can be used in the teardown method to stop the flask app.
- The @start_flask_app accepts an instance of your flask app and the host/port to run it on.
- The @specmatic_contract_test accepts host/port of your flask app and the path to the specmatic.json file in your project. You can also pass the path to the actual contract/specification file if you don't wish to use specmatic.json.
- You can run this test class either from your IDE or from command line :
pytest test -v -s
Click here to learn more about Specmatic test mode.
-
If you want to stub out a service dependency, add the specmatic_stub decorator on top of the start_flask_app.
@specmatic_contract_test(host, port, specmatic_json_file) @specmatic_stub(stub_host, stub_port, [expectation_json_file], specmatic_json_file) @start_flask_app(app, host, port) class TestApiContract: @classmethod def teardown_class(cls): cls.flask_server.stop() cls.stub.stop()
- The specmatic_stub decorator adds an attribute 'stub' on the test class, which can be used in the teardown method to stop the stub process.
- The @specmatic_stub accepts host/port on which the dependency is expected to be running.
It also accepts a list of expectation json file paths which can be used to return stubbed responses.
Click here to learn more about Specmatic stub mode and using expectation json files.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file specmatic_python-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: specmatic_python-0.2.0-py3-none-any.whl
- Upload date:
- Size: 79.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee67759031396415b80c094b8f0023dac6912cbf14fec3634388c4fe515f6f2f |
|
MD5 | 30c4729e15451364abcbb65676badfb8 |
|
BLAKE2b-256 | 063a05910fba8685ff36f54ce8323811bafce56ef784c33950020f2068b55ee9 |