summaryrefslogtreecommitdiff
path: root/django/test/utils.py
AgeCommit message (Collapse)Author
2026-01-31Refs #34118 -- Removed asgiref coroutine detection shims.Jacob Walls
As Python 3.12 is now the floor, we can drop the shims and use the `inspect` module.
2025-08-14Fixed #36410 -- Added support for Template Partials to the Django Template ↵farhan
Language. Introduced `{% partialdef %}` and `{% partial %}` template tags to define and render reusable named fragments within a template file. Partials can also be accessed using the `template_name#partial_name` syntax via `get_template()`, `render()`, `{% include %}`, and other template-loading tools. Adjusted `get_template()` behavior to support partial resolution, with appropriate error handling for invalid names and edge cases. Introduced `PartialTemplate` to encapsulate partial rendering behavior. Includes tests and internal refactors to support partial context binding, exception reporting, and tag validation. Co-authored-by: Carlton Gibson <carlton@noumenal.es> Co-authored-by: Natalia <124304+nessita@users.noreply.github.com> Co-authored-by: Nick Pope <nick@nickpope.me.uk>
2025-07-23Refs #36500 -- Rewrapped long docstrings and block comments via a script.django-bot
Rewrapped long docstrings and block comments to 79 characters + newline using script from https://github.com/medmunds/autofix-w505.
2025-06-05Fixed #36435 -- Made CaptureQueriesContext restore reset_queries conditionally.Adam Johnson
2025-02-16Refs #35967 -- Deprecated BaseDatabaseCreation.create_test_db(serialize).Simon Charette
Given there are no longer any internal usages of serialize=True and it poses a risk to non-test databases integrity it seems appropriate to deprecate it.
2025-02-16Fixed #35967 -- Deferred test suite fixtures serialization after all dbs setup.Simon Charette
While the top-level objects fed to serialization are bound to the test database being created nothing prevents code invoked during serialization from performing queries against other connections entries that haven't been swapped yet. The reported example of that is a database router directing all reads to a test mirror for a set of models involving auto-created many-to-many fields. It might be tempting to address the many-to-many field case but this a symptom of a larger problem where the test framework yields the flow execution to user code that could interact with non-test databases in unexpected ways. Deferring test database fixture serialization until the point where all connections entries have been swapped for their test equivalent ensures that no code triggered during serialization can interact with non-test databases. Thanks Jake Howard for the report and Jacob Walls for the initial investigation.
2023-12-06Refs #34986 -- Moved garbage_collect() helper to django.test.utils.Nick Pope
2023-07-27Fixed typo in django/test/utils.py.Bruno Alla
2023-01-17Refs #32446 -- Removed SERIALIZE test database setting per deprecation timeline.Mariusz Felisiak
2022-12-20Refs #34118 -- Adopted asgiref coroutine detection shims.Carlton Gibson
Thanks to Mariusz Felisiak for review.
2022-10-31Used more augmented assignment statements.Nick Pope
Identified using the following command: $ git grep -I '\(\<[_a-zA-Z0-9]\+\>\) *= *\1 *[-+/*^%&|<>@]'
2022-02-07Refs #33476 -- Refactored code to strictly match 88 characters line length.Mariusz Felisiak
2022-02-07Refs #33476 -- Reformatted code with Black.django-bot
2022-01-25Refs #20349 -- Avoided loading testing libraries when not needed.Collin Anderson
2021-06-29Refs #32655 -- Improved error if iter_test_cases() is passed a string.Chris Jerdonek
2021-03-11Refs #32489 -- Doc'd and tested iter_test_cases() support for an iterable of ↵Chris Jerdonek
tests.
2021-03-09Fixed #32516 -- Fixed reorder_suite() with duplicates and reverse=True.Chris Jerdonek
2021-03-05Fixed #32489 -- Added iter_test_cases() to iterate over a TestSuite.Chris Jerdonek
This also makes partition_suite_by_type(), partition_suite_by_case(), filter_tests_by_tags(), and DiscoverRunner._get_databases() to use iter_test_cases().
2021-02-24Fixed #32446 -- Deprecated SERIALIZE test database setting.Simon Charette
Whether or not the state of a test database should be serialized can be inferred from the set of databases allowed to be access from discovered TestCase/TransactionTestCase enabling the serialized_rollback feature which makes this setting unnecessary. This should make a significant test suite bootstraping time difference on large projects that didn't explicitly disable test database serialization.
2021-02-24Refs #31811 -- Restored **kwargs to django.test.utils.setup_databases().Mariusz Felisiak
Accidentally removed in 61a0ba43cfd4ff66f51a9d73dcd8ed6f6a6d9915.
2021-02-16Fixed #29052 -- Made test database creation preserve alias order and prefer ↵Harm Geerts
the "default" database. This fixes flushing test databases when two aliases point to the same database. Use a list() to store the test database aliases so the order remains stable by following the order of the connections. Also, always use the "default" database alias as the first alias to accommodate `migrate`. Previously `migrate` could be executed on a secondary alias which caused truncating the "default" database.
2020-09-07Fixed #31944 -- Used addCleanup() to register TestContextDecorator cleanups.François Freitag
Cleanups from addCleanup() are scheduled to happen in reverse order to the order they are added (LIFO). Ensures each cleanup is executed from the innermost to the outermost.
2020-09-03Fixed #31979 -- Made django.test.utils.setup_databases()'s time_keeper ↵Jon Dufresne
argument optional.
2020-08-14Added missing items to django.test.client.__all__ and django.test.utils.__all__.Mads Jensen
2020-08-13Refs #31811 -- Added optional timing outputs to the test runner.Ahmad A. Hussein
2020-03-18Fixed #31224 -- Added support for asynchronous views and middleware.Andrew Godwin
This implements support for asynchronous views, asynchronous tests, asynchronous middleware, and an asynchronous test client.
2020-02-13Fixed #31250 -- Ignored processing instructions in ↵yura
assertXMLEqual()/assertXMLNotEqual().
2019-12-04Removed unnecessary dict.get() call in favor of direct indexing.Jon Dufresne
The 'TEST' key is always set to a dictionary in ConnectionHandler.
2019-05-24Fixed #30497 -- Ignored document type in assertXMLEqual()/assertXMLNotEqual().Caio Ariede
2019-04-24Removed unnecessary assignments in various code.Jon Dufresne
2019-02-06Fixed #30159 -- Removed unneeded use of OrderedDict.Nick Pope
Dicts preserve order since Python 3.6.
2019-02-05Refs #27753 -- Removed django.test.utils.patch_logger() and str_prefix().Tim Graham
2019-01-10Fixed #28478 -- Make DiscoverRunner skip creating unused test databases.Simon Charette
SimpleTestCase.databases makes it possible to determine the set of databases required to run the discovered tests.
2018-11-25Fixed typo in patch_logger() docstring.takaaki shimbo
2018-09-28Refs #28909 -- Simplifed code using unpacking generalizations.Sergey Fedoseev
2018-08-21Fixed #29658 -- Registered model lookups in tests with a context manager.Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి)
2018-08-17Fixed #29024 -- Made TestContextDecorator call disable() if setUp() raises ↵Kamil
an exception.
2018-07-30Fixed #29467 -- Made override_settings handle errors in setting_changed ↵Sławek Ehlert
signal receivers.
2018-06-12Restored django.test.utils.patch_logger() for backwards compatibility.Jon Dufresne
Added back after 607970f31cc07c317f2ebb684c8f3ccc36a95b3e.
2018-05-07Replaced django.test.utils.patch_logger() with assertLogs().Claude Paroz
Thanks Tim Graham for the review.
2018-01-08Fixed #28869 -- Made tagged test classes and methods inherit tags from parents.Will Ayd
2018-01-03Fixed #28982 -- Simplified code with and/or.Дилян Палаузов
2017-12-26Fixed #28930 -- Simplified code with any() and all().Дилян Палаузов
2017-12-11Fixed #28909 -- Simplified code using tuple/list/set/dict unpacking.Nick Pope
2017-12-06Fixed #28893 -- Removed unnecessary dict.items() calls.Tim Graham
2017-09-11Fixed #28578 -- Renamed DatabaseCreation number arguments to suffix.Jon Dufresne
2017-08-24Used sets for CheckRegistry.registered_checks and deployment_checks.Sergey Fedoseev
2017-08-21Removed need for hasattr(check, 'tags') in CheckRegistry.Sergey Fedoseev
It was needed to pass tests because registered checks weren't properly mocked.
2017-05-18Fixed #28203 -- Ignored connection configuration queries in assertNumQueries().François Freitag
2017-04-27Removed obsolete django.test.utils.strip_quotes().Tim Graham
Django's test runners no longer discover doctests.