EWC has multiple types of tests. To run a particular test suite we use Makefile targets.
Underneath, those make targets create a virtual environment, install the required Python
dependencies and use nose Python test runner to run the tests.

Unit tests exercise small units/pieces of code (usually those are functions) and don’t require
any services or 3rd party dependencies to run. Besides manipulating the state in memory, they
usually have no other side affects.

In cases where a unit you are testing requires a service to run, you should use the mock
library to mock the service and the result.

Note: Currently some of the unit tests require database (MongoDB) and message bus (RabbitMQ) to
run. We are in process of moving those tests to the integration test suite.

Unit tests are located in <component>/tests/unit/, e.g. st2api/tests/unit/.