Custom TestCases and other test helpers for Django apps
Project description
incuna-test-utils
Incuna Test Utils is a collection of TestCases and other helpers for testing Django apps.
TestCases
These are found in incuna_test_utils.testcases
.
urls.URLTestCase
URLTestCase
adds assert_url_matches_view
to check a url has been configured
to use the correct view.
request.BaseRequestTestCase
BaseRequestTestCase
provides various helper methods for working with django
views:
get_view
returns a view callable based on aview
attribute set on theTestCase
class.view
can be either a function-based or a class-based view.view_instance
returns an instance of a class-basedview
attribute set on theTestCase
class.view_instance
accepts arequest
and*args
and**kwargs
. These are set on theview
instance.add_session_to_request
gives arequest
asession
.create_user
returns auser
using eitherAnonymousUser
or auser_factory
attribute set on theTestCase
. Theuser_factory
should have acreate
method that returns auser
.factory_boy
is recommended.create_request
wraps Django'sRequestFactory
to provide useful defaults. It returns arequest
withuser
and_messages
attributes. It can also setDATA
andsession
on therequest
.
integration.BaseAdminIntegrationTestCase
BaseAdminIntegrationTestCase
provides a TestCase
to test the django admin actions
such as add
, change
, changelist
and delete
.
BaseAdminIntegrationTestCase
should be subclassed and should define two attributes:
- a
user_factory
to create an authenticated client; - a
model
to test.
Example:
from incuna_test_utils.testcases.integration import BaseAdminIntegrationTestCase
class TestUserAdmin(BaseAdminIntegrationTestCase):
user_factory = factories.UserFactory
model = ModelToTest
def test_admin_add_page(self):
response = self.get_admin_add_page()
self.assertEqual(response.status_code, 200)
...
integration.BaseIntegrationTestCase
BaseIntegrationTestCase
extends BaseRequestTestCase
and adds more helper
methods useful for integration tests:
access_view
creates arequest
, calls theTestCase
'sview
and returns aresponse
.render_to_str
renders aresponse
using arequest
,response.template_name
andresponse.context_data
. If arequest
is not provided,render_to_str
usesresponse.request
.access_view_and_render_response
wrapsaccess_view
andrender_to_str
. It also checks theresponse.status_code
is as expected. The defaultexpected_status
is200
(HTTP_OK
).assert_presence
checks that an item does or doesn't appear in a container.assert_count
checks that an item appears in a container an expected number of times.assert_presence_multiple
andassert_count_multiple
run one or more assertions in a single method call.render_view_and_assert_content
andrender_view_and_assert_content_counts
combine a call toaccess_view_and_render_response
with a multiple-assert call on the result.
api_request.BaseAPIRequestTestCase
BaseAPIRequestTestCase
extends BaseRequestTestCase
for use with
django-rest-framework
.
create_request
is overriden to use rest framework'sAPIRequestFactory
. It also setsrequest.format
to'json'
. If called withauth=True
(the default),create_request
also callsforce_authenticate
.
Factories
These are found in incuna_test_utils.factories
. They require
factory_boy
.
user.BaseUserFactory
This defines a simple factory with an email
attribute. This can be used with
a custom User model that has these fields:
class UserFactory(BaseUserFactory):
class Meta:
model = User
user.BaseAdminUserFactory
BaseAdminUserFactory
defines a user with is_active
, is_staff
and
is_superuser
to True
. This factory also defines a post hook which
sets a default password accessible with raw_password
.
feincms_page.PageFactory
This factory can be used to create instances of
Feincms
's
Page
model.
compat
compat
provides a few miscelleaneous helpers useful for testing cross-version
code:
DJANGO_LT_19
isTrue
ifdjango.VERSION
is less than1.9
.Python2AssertMixin
aliases python 2.7 assert methods to match the python 3 api.TestCase.assertItemsEqual
is aliased asassertCountEqual
TestCase.assertRegexpMatches
is aliased asassertRegex
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file incuna-test-utils-8.0.0.tar.gz
.
File metadata
- Download URL: incuna-test-utils-8.0.0.tar.gz
- Upload date:
- Size: 19.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.3.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc8194d275bc39b94a62c737d58a8df506399778c806a0f465b9db725286927d |
|
MD5 | bf8ff3674f126c4fb9735868e64ad7c7 |
|
BLAKE2b-256 | 01e8619c6f28d32782f153b1f1325a8d4052c27b208ebc740331188fa5797c47 |
File details
Details for the file incuna_test_utils-8.0.0-py2.py3-none-any.whl
.
File metadata
- Download URL: incuna_test_utils-8.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 26.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.3.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34b3f3a1f450bb96c646ecf029f4ea880ea5db25217659ec4f18f060c38dd5ae |
|
MD5 | ab37b50712d44c5200acb51aa88b406a |
|
BLAKE2b-256 | c2b8a8b660aceeca49bcecf0d77a9f47b339ee206043e2c06652b13aec77b9cd |