def tester(request): """Tester fixture.""" class Handler(RequestHandler): def get(self): self.write('Hello') app = Application([url('/hello', Handler)]) tester = Tester(app) tester.setup() request.addfinalizer(tester.teardown) return tester
def test_reuse(): """Tester is not reusable.""" class Handler(RequestHandler): def get(self): self.write('Hello') app = Application([url('/hello', Handler)]) tester = Tester(app) with tester: response = yield tester.http_client.fetch(tester.url_for('/hello')) assert 'Hello' == text_body(response) with pytest.raises(RuntimeError): tester.setup()
def test_another_loop(): """We can handle only one I/O loop per test.""" class Handler(RequestHandler): def get(self): self.write('Hello') app = Application([url('/hello', Handler)]) tester1 = Tester(app) with tester1: response = yield tester1.http_client.fetch( tester1.url_for('/hello')) assert 'Hello' == text_body(response) tester2 = Tester(app) with tester2: with pytest.raises(RuntimeError): yield tester2.http_client.fetch( tester2.url_for('/hello'))
def test_shared_loop(): """But, we can use same I/O loop in multiple testers.""" class Handler(RequestHandler): def get(self): self.write('Hello') app = Application([url('/hello', Handler)]) io_loop = tornado.ioloop.IOLoop() tester1 = Tester(app, io_loop=io_loop) with tester1: response = yield tester1.http_client.fetch( tester1.url_for('/hello')) assert 'Hello' == text_body(response) tester2 = Tester(app, io_loop=io_loop) with tester2: response = yield tester2.http_client.fetch( tester2.url_for('/hello')) assert 'Hello' == text_body(response)
def test_fixture(tester: Tester): """Test tester fixture.""" response = yield tester.http_client.fetch(tester.url_for('/hello')) assert 'Hello' == text_body(response)