Skip to main content

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.

NOTE: If you are using an IDE like PyCharm to run tests, please edit the test configuration and set the working directory to your project root directory.

  • 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)
    @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.
    • Specmatic will look for a specmatic.json file in your project root directory. If you don't wish to use specmatic.json, you can also pass the path to the actual contract/specification file to the specmatic_contract_test decorator.
    • You can run this test class either from your IDE or from command line (from your project root directory) :
      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_stub(stub_host, stub_port, [expectation_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.
    • The Specmatic stub will look for a specmatic.json file in your project root directory. If you don't wish to use specmatic.json, you can also pass the path to the actual contract/specification file to the specmatic_stub decorator.
    • Run this test class either from your IDE or from command line (from your project root directory) :
      pytest test -v -s
      Click here to learn more about Specmatic stub mode and using expectation json files.

Metadata

Release files for specmatic-python 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for specmatic-python 0.2.2
File Size Uploaded
specmatic-python-0.2.2.tar.gz 79.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for specmatic-python 0.2.2
File Interpreter ABI Platform
specmatic_python-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 158.2 MB

Release files / specmatic-python-0.2.2.tar.gz

Download URL specmatic-python-0.2.2.tar.gz
Size 79.1 MB
Tags Source
SHA-256 checksum
How to use checksums
a93edb168ba197795fe043455c3f43d3c32fd9e7b0d1faf40a939fcac868b929
BLAKE2b-256 checksum
How to use checksums
e72d5b4af75a5cdc8663e11a506918e631fcf208129d32989ea4eebda15081fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / specmatic_python-0.2.2-py3-none-any.whl

Download URL specmatic_python-0.2.2-py3-none-any.whl
Size 79.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
06c5fc91db7805fcd8a18d2929c26ffc6c36bf5b09e6f479ccb5941191093e95
BLAKE2b-256 checksum
How to use checksums
0c9a12f7c38b062bce644e1aa6c2f5efb2ab6d5c99c70aff3dbfa45848e39162
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

1 release file

0.2.0

1 release file

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page