Microservices automated test tool

Support your team with a good Catcher!

What is catcher?

Catcher is a flexible end to end test tool, that can be used for automated microservices or data pipelines testing. It helps you to check either one service or whole system interaction from the front-end to the back-end. With the help of Catcher you can easily mock external services your system relies on. Catcher is not about only http, it can check different services, such as Kafka, Postgres, CouchBase, Mongodb, Elastic, S3, emails and others.

Testing - How it works?

  1. You implement new business requirements, touching one ore more services (external and internal)
  2. You write tests file in YAML or JSON formats where you describe data movement in your system
  3. You run your tests in any environment (from dev to prod) by just changing inventory files.
  4. Bob (your colleague) implements his own business logic, which requires your test (or part of it) to be run.
  5. Bob writes his test in YAML and includes your test (or certain steps) to be run before or during his test.
  6. John (your devOps) decides to automate tests and makes CI run all tests on every microservice deploy.
  7. Your business logic is tested automatically and you will know if some of your services interact incorrectly.
  8. Profit.


You can run catcher in docker with all libraries, drivers and steps already installed and configured.
To install catcher locally with all internal modules run sudo pip install catcher-modules[all].
This will install catcher and catcher-modules package.
To install just catcher run sudo pip install catcher.
To install specific catcher-module use pip install catcher-modules[kafka]. See catcher-modules-index for all available modules.

Changelog is here.


Catcher can be easily customized to serve your needs.

  1. You can write your own functions and filters and use them in your step’s templates.
  2. You can create your own steps (as python script or any executable)
  3. You can write your steps in catcher itself and include them from other tests.


  • Write catcher script (see tests). F.e.:

        - http: {get: {url: ''}}
        - redis:
                get: 'foo'
            register: {foo: '{{ OUTPUT }}'}
        - check:
            equals: {the: '{{ foo }}', is: 'bar'}
  • Run catcher catcher my_test_file.yml.

You can also specify inventory with -i to test against different environments, custom module paths with -m to include your own modules. Run catcher -h to get full list of available options.
See run documentation for local & docker run info.

Why catcher?

  • don’t repeat test code. Write one test and call its steps from another;
  • compute and override variables to check your data and compose new flexible requests;
  • apply catcher.steps.check() to the steps results;
  • write test for development, change inventory and test stage/uat/prod after deploy;
  • test all your microservices with ease;
  • use selenium steps to involve front-end in your e2e tests;
  • modular architecture
  • perfect for big data pipelines testing with prepare-expect
  • automate your testing!

Indices and tables