Skip to content

Commit

Permalink
Add basic testing documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
jlucas91 committed Dec 19, 2023
1 parent 32230c1 commit 494ba30
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
43 changes: 43 additions & 0 deletions docs/docs/guides/testing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Testing

**Django Ninja** provides a test client to make it easy to test your API.

To test the following API:
```python
from ninja import NinjaAPI, Schema

api = NinjaAPI()
router = Router()

class HelloResponse(Schema):
msg: str

@router.get("/hello", response=HelloResponse)
def hello(request):
return {"msg": "Hello World"}

api.add_router("", router)
```

You can use the Django test class:
```python
from django.test import TestCase
from ninja.testing import TestClient

class HelloTest(TestCase):
def test_hello(self):
client = NinjaTestClient(router)
response = client.get("/hello")

self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), {"msg": "Hello World"})
```

Arbitrary attributes can be added to the request object by passing keyword arguments to the client request methods:
```python
class HelloTest(TestCase):
def test_hello(self):
client = NinjaTestClient(router)
# request.company_id will now be set within the view
response = client.get("/hello", company_id=1)
```
1 change: 1 addition & 0 deletions docs/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ nav:
- guides/response/response-renderers.md
- Splitting your API with Routers: guides/routers.md
- guides/authentication.md
- guides/testing.md
- guides/api-docs.md
- guides/errors.md
- guides/urls.md
Expand Down

0 comments on commit 494ba30

Please sign in to comment.