Integration testing Nameko microservices
Earlier we looked at testing a service in isolation by spawning a single worker. This is great for unit testing but it is not a viable option for integration testing.
Nameko gives us the ability to test multiple services working in tandem in a single test. Look at the following:
def test_root_http(web_session, web_config, container_factory): web_config['AMQP_URI'] = 'pyamqp://guest:guest@localhost' web_server = container_factory(WebServer, web_config) konnichiwa = container_factory(KonnichiwaService, web_config) web_server.start() konnichiwa.start() result = web_session.get('/') assert result.text == 'Konnichiwa!'
As you can see in the preceding code, Nameko also gives us access to the following test fixtures:
web_session
: Gives us a session in which to make HTTP requests to the serviceweb_config
: Allows us to access the configuration for the service (outside of testing, this is equivalent to theconfig.yaml
file...