Skip to content

Commit

Permalink
Add testing documentation (#1760)
Browse files Browse the repository at this point in the history
Contributes towards #1531
  • Loading branch information
RobbeSneyders authored Oct 29, 2023
1 parent 77a63a0 commit 452ffc7
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
3 changes: 2 additions & 1 deletion connexion/apps/abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,8 @@ def add_error_handler(
"""

def test_client(self, **kwargs):
"""Creates a test client for this application."""
"""Creates a test client for this application. The keywords arguments passed in are
passed to the ``StarletteClient``."""
return TestClient(self, **kwargs)

def run(self, import_string: str = None, **kwargs):
Expand Down
50 changes: 50 additions & 0 deletions docs/testing.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
Testing
=======

test_client
-----------

Connexion exposes a ``test_client`` which you can use to make requests against your
Connexion application during tests.

.. code-block:: python
def test_homepage():
app = ... # Set up app
kwarg = {...}
with app.test_client(**kwargs) as client:
response = client.get("/")
assert response.status_code == 200
The passed in keywords used to create a `Starlette` ``TestClient`` which is then returned.

For more information, please check the `Starlette documentation`_.

.. _Starlette documentation: https://www.starlette.io/testclient/

TestContext
-----------

To have access to the :doc:`context` variables during tests, you can use the :class:`.TestContext`
provided by Connexion.

.. code-block:: python
from unittest.mock import MagicMock
from connexion.context import operation
from connexion.testing import TestContext
def get_method():
"""Function called within TestContext you can access the context variables here."""
return operation.method
def test():
operation = MagicMock(name="operation")
operation.method = "post"
with TestContext(operation=operation):
assert get_method() == "post
If you don't pass in a certain context variable, the `TestContext` will generate a dummy one.

0 comments on commit 452ffc7

Please sign in to comment.