Test utilities for Django projects.
Project description
django-pigeon
Test utilities for Django projects
Installation
$ pip install django-pigeon
Usage
django-pigeon comes equipped with a RenderTestCase which provides an assortment of methods on top of Django's TestCase that assist with end-to-end testing of views in Django. Writing a test that verifies a view renders correctly is as simple as:
from pigeon.test import RenderTestCase
class FooTestCase(RenderTestCase):
def testFooView(self):
self.assertResponseRenders('/foo/')
You can also inspect the rendered response:
def testFooView(self):
response = self.assertResponseRenders('/foo/')
self.assertIn('FOO', response.content)
By default, assertResponseRenders verifies that the status code of the response is 200, but you can change this by specifying the status_code keyword argument:
def testBarView404(self):
self.assertResponseRenders('/bar/', status_code=404)
You can also make POST and PUT requests using assertResponseRenders by providing the method and data keywords arguments:
def testCreateFooView(self):
payload = {'text': 'Hello World!'}
self.assertResponseRenders('/foo/create/', status_code=201, method='POST', data=payload)
If you are using HTML generated from Django forms, you can set has_form_error=True as a shortcut to check for errorlist in the resulting HTML:
def testCreateFooViewWithoutText(self):
response = self.assertResponseRenders('/foo/create/', method='POST', has_form_error=True)
self.assertIn('This field is required.', response.content)
Use assertAPIResponseRenders for JSON responses. json.loads is automatically called on the response, so the object returned is ready for inspection:
def testFooAPIView(self):
payload = {'text': 'Hello!'}
response = self.assertAPIResponseRenders('/foo/', method='POST', data=payload)
self.assertEquals(response['text'], 'Hello!')
You can use assertResponseRedirects to test redirects:
def testFooRedirects(self):
# /foo/ redirects to /bar/
self.assertResponseRedirects('/foo/', '/bar/')
If you have a list of views that you want to verify are rendering as 200 without adding any special assertion logic, you can simply override the get200s and getAPI200s methods, which should return a list of URLs. django-pigeon will construct test methods that check that rendering all of these URLs results in a 200:
class FooTestCase(RenderTestCase):
def get200s(self):
return [
'/foo/',
'/bar/',
'/foobar/',
]
def getAPI200s(self):
return [
'/api/foo/',
]
Most of the features in RenderTestCase are actually implemented in the mixin class RenderTestCaseMixin. You can combine RenderTestCaseMixin with other TestCase classes to get additional functionality:
from django.test import TransactionTestCase
from pigeon.test import RenderTestCaseMixin
class FooTransactionTestCase(RenderTestCaseMixin, TransactionTestCase):
def testFooView(self):
...
django-pigeon supports Python 3.5+ and Django 2.2+.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django-pigeon-0.4.0.tar.gz.
File metadata
- Download URL: django-pigeon-0.4.0.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.8.7 Linux/4.15.0-1077-gcp
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
528407a3d8e6fa1e57f79155a809f90ed882d31bd394e9244a4e0c832ebd34e4
|
|
| MD5 |
6136b07fd7e914a98ecf79a0e78a1c8a
|
|
| BLAKE2b-256 |
5ff238a87b147b8f3db5122b032f6111251e857486f8ac97a207a95bf492aeb7
|
File details
Details for the file django_pigeon-0.4.0-py3-none-any.whl.
File metadata
- Download URL: django_pigeon-0.4.0-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.8.7 Linux/4.15.0-1077-gcp
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaa94e55ff10eb4dfc157ca74bc39a64fe94d7ed0e0fb316d2778e4ff0a0e091
|
|
| MD5 |
2db9058945af296e3c3e07241fd86ce4
|
|
| BLAKE2b-256 |
08777d6494f92cc81ff6fd2ff2b1597a70ba4b0d0fcd18a50e0069f12d3716fd
|