aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2013-07-15 11:38:38 +0100
committerTom Christie2013-07-15 11:38:38 +0100
commitae63c49777f4d5b766b85a4b28f6328bd6f9516a (patch)
tree2462b69085edba2995034939c5a1e7e40738e4ce
parent6de9b7c8caaea00df2b1399ecd7b815ac556a70e (diff)
downloaddjango-rest-framework-ae63c49777f4d5b766b85a4b28f6328bd6f9516a.tar.bz2
Added test case classes
-rw-r--r--docs/api-guide/testing.md30
-rw-r--r--rest_framework/test.py17
2 files changed, 47 insertions, 0 deletions
diff --git a/docs/api-guide/testing.md b/docs/api-guide/testing.md
index aba9283e..40b07763 100644
--- a/docs/api-guide/testing.md
+++ b/docs/api-guide/testing.md
@@ -167,6 +167,36 @@ As usual CSRF validation will only apply to any session authenticated views. Th
---
+# Test cases
+
+REST framework includes the following test case classes, that mirror the existing Django test case classes, but use `APIClient` instead of Django's default `Client`.
+
+* `APISimpleTestCase`
+* `APITransactionTestCase`
+* `APITestCase`
+* `APILiveServerTestCase`
+
+## Example
+
+You can use any of REST framework's test case classes as you would for the regular Django test case classes. The `self.client` attribute will be an `APIClient` instance.
+
+ from django.core.urlresolvers import reverse
+ from rest_framework import status
+ from rest_framework.test import APITestCase
+
+ class AccountTests(APITestCase):
+ def test_create_account(self):
+ """
+ Ensure we can create a new account object.
+ """
+ url = reverse('account-list')
+ data = {'name': 'DabApps'}
+ response = self.client.post(url, data, format='json')
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+ self.assertEqual(response.data, data)
+
+---
+
# Testing responses
## Checking the response data
diff --git a/rest_framework/test.py b/rest_framework/test.py
index 29d017ee..ed436976 100644
--- a/rest_framework/test.py
+++ b/rest_framework/test.py
@@ -6,6 +6,7 @@ from __future__ import unicode_literals
from django.conf import settings
from django.test.client import Client as DjangoClient
from django.test.client import ClientHandler
+from django.test import testcases
from rest_framework.settings import api_settings
from rest_framework.compat import RequestFactory as DjangoRequestFactory
from rest_framework.compat import force_bytes_or_smart_bytes, six
@@ -137,3 +138,19 @@ class APIClient(APIRequestFactory, DjangoClient):
# Ensure that any credentials set get added to every request.
kwargs.update(self._credentials)
return super(APIClient, self).request(**kwargs)
+
+
+class APISimpleTestCase(testcases.SimpleTestCase):
+ client_class = APIClient
+
+
+class APITransactionTestCase(testcases.TransactionTestCase):
+ client_class = APIClient
+
+
+class APITestCase(testcases.TestCase):
+ client_class = APIClient
+
+
+class APILiveServerTestCase(testcases.LiveServerTestCase):
+ client_class = APIClient