General Setting Configuration

The following Django settings allow configuration of the ExpandedTestCases package.

All of these settings are optional, and will fall back to a default value if not defined.

Configuring Client State

This section documents controls for handling test client state, which is directly relevant to “retaining user login between client requests” as well as “retaining session data between client requests”.

Note that if you need to test for session data in your project, then the default settings are probably inadequate, and you will need to adjust the below values.

RESET_CLIENT_STATE_ON_REQUEST

Originally, DjangoETC would force the Django test client to “reset” at the start of each assertResponse() statement. The idea was that it would ensure no user accidentally remains logged in between assertions, which could unexpectedly lead to tests being incorrect.

However, due to how Django logs out test users, this had the side-effect of also clearing session data between assertions. Therefore, concurrent assertions could not share session data, and thus some test scenarios were not possible.

This setting keeps the original behavior if set to True (the default). Set to false to skip client reset between assertions for all project tests.

Note

Alternatively, if you don’t want to use a project-wide setting, then you can set the self._reset_client_state_on_request class-level variable.

This will default to the value defined by RESET_CLIENT_STATE_ON_REQUEST for your project.

The self._reset_client_state_on_request is a class-level boolean that lets you override the setting on a per-test basis.

Type:

bool

Default:

True

Example:

DJANGO_EXPANDED_TESTCASES_RESET_CLIENT_STATE_ON_REQUEST = False

Configuring Content Areas for Assertions

SKIP_CONTENT_BEFORE

Only applicable to Response Assertion statements, when using expected_content.

Effectively an “upper” html content value to strip out of both search space and debug output. Anything above this value will be removed.

In most projects, there is a set of content (such as header data) at the start of the page, which tests generally won’t target. If the project has a consistent element or string value that defines where content starts being relevant, that value can be defined here, to then exclude all start-of-page content above it, for all tests within project.

Defining this setting can help significantly reduce redundant/”useless” debug output for integration tests, as long as the content is universally exclude-able project-wide.

For similar logic on a per-test basis, see the content_starts_after parameter.

Type:

string (Either regex or literal)

Default:

None

Example:

DJANGO_EXPANDED_TESTCASES_SKIP_CONTENT_BEFORE = '<h1>My Header</h1>'

SKIP_CONTENT_AFTER

Only applicable to Response Assertion statements, when using expected_content.

Effectively an “lower” html content value to strip out of both search space and debug output. Anything below this value will be removed.

Similar to above SKIP_CONTENT_BEFORE setting.

For similar logic on a per-test basis, see the content_starts_before parameter.

Type:

string (Either regex or literal)

Default:

None

Example:

DJANGO_EXPANDED_TESTCASES_SKIP_CONTENT_AFTER = '<footer>My Footer</footer>'

SKIP_CONTENT_HEAD

Similar to above SKIP_CONTENT_BEFORE setting, except in boolean form. Can use this if the project should simply ignore content in the <head> tag.

If set to false or if SKIP_CONTENT_BEFORE is defined, then has no effect.

Type:

bool

Default:

True

Example:

DJANGO_EXPANDED_TESTCASES_SKIP_CONTENT_HEAD = True

Configuring Assertion Functionality

Some of the provided assertions can be configured to be more or less strict, using the following settings.

ALLOW_TITLE_PARTIALS

When running the assertPageTitle() assertion, this setting can optionally allow partial title matching. If partial is allowed, then checks for title partials/substrings will pass. Otherwise, the title string must match the full provided test value, or it will fail.

Type:

bool

Default:

False

Example:

DJANGO_EXPANDED_TESTCASES_ALLOW_TITLE_PARTIALS = True

ALLOW_MESSAGE_PARTIALS

When running the assertContextMessages() assertion, this setting can optionally allow partial message matching. If partial is allowed, then checks for message partials/substrings will pass. Otherwise, the message string must match the full provided test value, or it will fail.

Type:

bool

Default:

False

Example:

DJANGO_EXPANDED_TESTCASES_ALLOW_MESSAGE_PARTIALS = True

MATCH_ALL_CONTEXT_MESSAGES

When running the assertContextMessages() assertion, this setting optionally tell tests to fail when there are messages in the response that were not explicitly tested for.

Only applies in assertResponse if any expected_messages were provided at all. Otherwise, the assertResponse will still pass in the case when no expected_messages were provided, and context messages were returned with the response.

Type:

bool

Default:

False

Example:

DJANGO_EXPANDED_TESTCASES_MATCH_ALL_CONTEXT_MESSAGES = True