Add app.test_mode which is set on testing calls

This commit is contained in:
Adam Hopkins 2020-07-09 14:52:58 +03:00
parent db1c819fe1
commit c347ff742e
3 changed files with 24 additions and 0 deletions

View File

@ -90,6 +90,7 @@ class Sanic:
self.named_response_middleware = {}
# Register alternative method names
self.go_fast = self.run
self.test_mode = False
@property
def loop(self):

View File

@ -21,6 +21,7 @@ class SanicTestClient:
self.app = app
self.port = port
self.host = host
self.app.test_mode = True
def get_new_session(self):
return httpx.AsyncClient(verify=False)
@ -200,6 +201,7 @@ class SanicASGITestClient(httpx.AsyncClient):
app.asgi = True
self.app = app
self.app.test_mode = True
dispatch = SanicASGIDispatch(app=app, client=(ASGI_HOST, PORT or 0))
super().__init__(dispatch=dispatch, base_url=base_url)

View File

@ -222,3 +222,24 @@ def test_handle_request_with_nested_sanic_exception(app, monkeypatch, caplog):
def test_app_name_required():
with pytest.deprecated_call():
Sanic()
def test_app_has_test_mode_sync(app):
@app.get("/")
def handler(request):
assert request.app.test_mode
return text("test")
_, response = app.test_client.get("/")
assert response.status == 200
@pytest.mark.asyncio
async def test_app_has_test_mode_async(app):
@app.get("/")
async def handler(request):
assert request.app.test_mode
return text("test")
_, response = await app.asgi_client.get("/")
assert response.status == 200