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_viewreturns a view callable based on aviewattribute set on theTestCaseclass.viewcan be either a function-based or a class-based view.view_instancereturns an instance of a class-basedviewattribute set on theTestCaseclass.view_instanceaccepts arequestand*argsand**kwargs. These are set on theviewinstance.add_session_to_requestgives arequestasession.create_userreturns auserusing eitherAnonymousUseror auser_factoryattribute set on theTestCase. Theuser_factoryshould have acreatemethod that returns auser.factory_boyis recommended.create_requestwraps Django'sRequestFactoryto provide useful defaults. It returns arequestwithuserand_messagesattributes. It can also setDATAandsessionon 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_factoryto create an authenticated client; - a
modelto 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_viewcreates arequest, calls theTestCase'sviewand returns aresponse.render_to_strrenders aresponseusing arequest,response.template_nameandresponse.context_data. If arequestis not provided,render_to_strusesresponse.request.access_view_and_render_responsewrapsaccess_viewandrender_to_str. It also checks theresponse.status_codeis as expected. The defaultexpected_statusis200(HTTP_OK).assert_presencechecks that an item does or doesn't appear in a container.assert_countchecks that an item appears in a container an expected number of times.assert_presence_multipleandassert_count_multiplerun one or more assertions in a single method call.render_view_and_assert_contentandrender_view_and_assert_content_countscombine a call toaccess_view_and_render_responsewith a multiple-assert call on the result.
api_request.BaseAPIRequestTestCase
BaseAPIRequestTestCase extends BaseRequestTestCase for use with
django-rest-framework.
create_requestis overriden to use rest framework'sAPIRequestFactory. It also setsrequest.formatto'json'. If called withauth=True(the default),create_requestalso 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_19isTrueifdjango.VERSIONis less than1.9.Python2AssertMixinaliases python 2.7 assert methods to match the python 3 api.TestCase.assertItemsEqualis aliased asassertCountEqualTestCase.assertRegexpMatchesis 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
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 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
|