All Projects → schemathesis → Schemathesis

schemathesis / Schemathesis

Licence: mit
A modern API testing tool for web applications built with Open API and GraphQL specifications.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Schemathesis

Openapi Spring Webflux Validator
🌱 A friendly kotlin library to validate API endpoints using an OpenApi 3.0 and Swagger 2.0 specification
Stars: ✭ 67 (-91.28%)
Mutual labels:  swagger, openapi, openapi3, hacktoberfest
Swagger Ui
Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.
Stars: ✭ 21,279 (+2670.7%)
Mutual labels:  swagger, openapi, openapi3, hacktoberfest
Apispec
A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)..
Stars: ✭ 831 (+8.2%)
Mutual labels:  swagger, openapi, openapi3, hacktoberfest
Express Jsdoc Swagger
Swagger OpenAPI 3.x generator
Stars: ✭ 69 (-91.02%)
Mutual labels:  swagger, openapi, openapi3, hacktoberfest
Prism
Turn any OpenAPI2/3 and Postman Collection file into an API server with mocking, transformations and validations.
Stars: ✭ 2,484 (+223.44%)
Mutual labels:  swagger, openapi, openapi3, cli
Mockoon
Mockoon is the easiest and quickest way to run mock APIs locally. No remote deployment, no account required, open source.
Stars: ✭ 3,448 (+348.96%)
Mutual labels:  swagger, openapi, openapi3, hacktoberfest
Redoc
📘 OpenAPI/Swagger-generated API Reference Documentation
Stars: ✭ 15,935 (+1974.87%)
Mutual labels:  swagger, openapi, openapi3, hacktoberfest
Netcoreblockly
.NET Core API to Blockly - generate from WebAPI, Swagger, OData, GraphQL =>
Stars: ✭ 121 (-84.24%)
Mutual labels:  graphql, swagger, openapi, hacktoberfest
Kin Openapi
OpenAPI 3.0 implementation for Go (parsing, converting, validation, and more)
Stars: ✭ 776 (+1.04%)
Mutual labels:  swagger, openapi, openapi3
Loopback Next
LoopBack makes it easy to build modern API applications that require complex integrations.
Stars: ✭ 3,972 (+417.19%)
Mutual labels:  swagger, openapi, hacktoberfest
Swaggen
OpenAPI/Swagger 3.0 Parser and Swift code generator
Stars: ✭ 385 (-49.87%)
Mutual labels:  swagger, openapi, cli
Pode
Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers
Stars: ✭ 329 (-57.16%)
Mutual labels:  swagger, openapi, hacktoberfest
Graphback
Graphback - Out of the box GraphQL server and client
Stars: ✭ 323 (-57.94%)
Mutual labels:  graphql, cli, hacktoberfest
Dredd
Language-agnostic HTTP API Testing Tool
Stars: ✭ 3,770 (+390.89%)
Mutual labels:  swagger, openapi, openapi3
Generator Express No Stress Typescript
🚄 A Yeoman generator for Express.js based 12-factor apps and apis using Typescript
Stars: ✭ 297 (-61.33%)
Mutual labels:  swagger, openapi, openapi3
Goa
Design-based APIs and microservices in Go
Stars: ✭ 4,493 (+485.03%)
Mutual labels:  swagger, hacktoberfest, openapi
Php Openapi
Read and write OpenAPI yaml/json files and make the content accessible in PHP objects.
Stars: ✭ 268 (-65.1%)
Mutual labels:  openapi, openapi3, hacktoberfest
Express Openapi Validator
🦋 Auto-validates api requests, responses, and securities using ExpressJS and an OpenAPI 3.x specification
Stars: ✭ 436 (-43.23%)
Mutual labels:  openapi, openapi3, hacktoberfest
Studio
The modern editor for API Design and Technical Writing.
Stars: ✭ 459 (-40.23%)
Mutual labels:  swagger, openapi, openapi3
Create Openapi Repo
🤖 Generator for GH repo to help you manage the OpenAPI definition lifecycle
Stars: ✭ 513 (-33.2%)
Mutual labels:  swagger, openapi, openapi3

Schemathesis

|Build| |Coverage| |Version| |Python versions| |Docs| |Chat| |License|

Schemathesis is a modern API testing tool for web applications built with Open API and GraphQL specifications.

It reads the application schema and generates test cases, which will ensure that your application is compliant with its schema.

The application under test could be written in any language; the only thing you need is a valid API schema in a supported format.

Simple to use and yet powerful to uncover hard-to-find errors thanks to the property-based testing approach backed by state-of-the-art Hypothesis <http://hypothesis.works/>_ library.

📣 Please fill out our quick survey <https://forms.gle/dv4s5SXAYWzvuwFWA>_ so that we can learn how satisfied you are with Schemathesis, and what improvements we should make. Thank you!

Features

  • Content-Type, schema, and status code conformance checks for Open API;
  • Testing of explicit examples from the input schema;
  • Stateful testing via Open API links;
  • Concurrent test execution;
  • Targeted testing;
  • Storing and replaying network requests;
  • Built-in ASGI / WSGI application support;
  • Code samples for easy failure reproduction;
  • Ready-to-go Docker image;
  • Configurable with user-defined checks, string formats, hooks, and targets.

Installation

To install Schemathesis via pip run the following command:

.. code:: bash

pip install schemathesis

Usage

You can use Schemathesis in the command line:

.. code:: bash

schemathesis run --stateful=links --checks all http://0.0.0.0:8081/schema.yaml

.. image:: https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/schemathesis.gif

Or in your Python tests:

.. code:: python

import schemathesis

schema = schemathesis.from_uri("http://0.0.0.0:8081/schema.yaml")


@schema.parametrize()
def test_api(case):
    case.call_and_validate()

CLI is simple to use and requires no coding; the in-code approach gives more flexibility.

Both examples above will run hundreds of requests against the API under test and report all found failures and inconsistencies along with instructions to reproduce them.

💡 See a complete working example project in the /example directory. 💡

Contributing

Any contribution to development, testing, or any other area is highly appreciated and useful to the project. For guidance on how to contribute to Schemathesis, see the contributing guidelines <https://github.com/schemathesis/schemathesis/blob/master/CONTRIBUTING.rst>_.

Support this project

Hi, my name is Dmitry! I started this project during my work at Kiwi.com <https://kiwi.com/>_. I am grateful to them for all the support they provided to this project during its early days and for the opportunity to evolve Schemathesis independently.

In order to grow the community of contributors and users, and allow me to devote more time to this project, please donate today <https://github.com/sponsors/Stranger6667>_.

Also, I occasionally write posts about Schemathesis in my blog <https://dygalo.dev/>_ and offer consulting services for businesses.

Commercial support

If you are interested in the effective integration of Schemathesis to your private project, you can contact me via email or Twitter <https://twitter.com/Stranger6667>_ and I will help you do that.

Links

Additional content:

  • An article <https://dygalo.dev/blog/schemathesis-property-based-testing-for-api-schemas/>_ about Schemathesis by @Stranger6667
  • A video <https://www.youtube.com/watch?v=9FHRwrv-xuQ>_ from EuroPython 2020 by @hultner
  • Schemathesis tutorial <https://appdev.consulting.redhat.com/tracks/contract-first/automated-testing-with-schemathesis.html>_ with an accompanying video <https://www.youtube.com/watch?v=4r7OC-lBKMg>_ by Red Hat
  • Using Hypothesis and Schemathesis to Test FastAPI <https://testdriven.io/blog/fastapi-hypothesis/>_ by @amalshaji

License

The code in this project is licensed under MIT license_. By contributing to Schemathesis, you agree that your contributions will be licensed under its MIT license.

.. |Build| image:: https://github.com/schemathesis/schemathesis/workflows/build/badge.svg :target: https://github.com/schemathesis/schemathesis/actions .. |Coverage| image:: https://codecov.io/gh/schemathesis/schemathesis/branch/master/graph/badge.svg :target: https://codecov.io/gh/schemathesis/schemathesis/branch/master :alt: codecov.io status for master branch .. |Version| image:: https://img.shields.io/pypi/v/schemathesis.svg :target: https://pypi.org/project/schemathesis/ .. |Python versions| image:: https://img.shields.io/pypi/pyversions/schemathesis.svg :target: https://pypi.org/project/schemathesis/ .. |License| image:: https://img.shields.io/pypi/l/schemathesis.svg :target: https://opensource.org/licenses/MIT .. |Chat| image:: https://img.shields.io/gitter/room/schemathesis/schemathesis.svg :target: https://gitter.im/schemathesis/schemathesis :alt: Gitter .. |Docs| image:: https://readthedocs.org/projects/schemathesis/badge/?version=stable :target: https://schemathesis.readthedocs.io/en/stable/?badge=stable :alt: Documentation Status

.. _MIT license: https://opensource.org/licenses/MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].