Skip to main content

Custom TestCases and other test helpers for Django apps

Project description

incuna-test-utils

Build Status

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 a view attribute set on the TestCase class. view can be either a function-based or a class-based view.
  • view_instance returns an instance of a class-based view attribute set on the TestCase class. view_instance accepts a request and *args and **kwargs. These are set on the view instance.
  • add_session_to_request gives a request a session.
  • create_user returns a user using either AnonymousUser or a user_factory attribute set on the TestCase. The user_factory should have a create method that returns a user. factory_boy is recommended.
  • create_request wraps Django's RequestFactory to provide useful defaults. It returns a request with user and _messages attributes. It can also set DATA and session on the request.

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 a request, calls the TestCase's view and returns a response.
  • render_to_str renders a response using a request, response.template_name and response.context_data. If a request is not provided, render_to_str uses response.request.
  • access_view_and_render_response wraps access_view and render_to_str. It also checks the response.status_code is as expected. The default expected_status is 200 (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 and assert_count_multiple run one or more assertions in a single method call.
  • render_view_and_assert_content and render_view_and_assert_content_counts combine a call to access_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's APIRequestFactory. It also sets request.format to 'json'. If called with auth=True (the default), create_request also calls force_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 is True if django.VERSION is less than 1.9.
  • Python2AssertMixin aliases python 2.7 assert methods to match the python 3 api.
    • TestCase.assertItemsEqual is aliased as assertCountEqual
    • TestCase.assertRegexpMatches is aliased as assertRegex

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

incuna-test-utils-8.0.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

incuna_test_utils-8.0.0-py2.py3-none-any.whl (26.5 kB view details)

Uploaded Python 2 Python 3

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

Hashes for incuna-test-utils-8.0.0.tar.gz
Algorithm Hash digest
SHA256 cc8194d275bc39b94a62c737d58a8df506399778c806a0f465b9db725286927d
MD5 bf8ff3674f126c4fb9735868e64ad7c7
BLAKE2b-256 01e8619c6f28d32782f153b1f1325a8d4052c27b208ebc740331188fa5797c47

See more details on using hashes here.

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

Hashes for incuna_test_utils-8.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 34b3f3a1f450bb96c646ecf029f4ea880ea5db25217659ec4f18f060c38dd5ae
MD5 ab37b50712d44c5200acb51aa88b406a
BLAKE2b-256 c2b8a8b660aceeca49bcecf0d77a9f47b339ee206043e2c06652b13aec77b9cd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page