Django_Basic_Manufacturing_3/venv/Lib/site-packages/pytest_django/asserts.py
2025-08-22 17:05:22 +07:00

222 lines
5.2 KiB
Python

"""
Dynamically load all Django assertion cases and expose them for importing.
"""
from __future__ import annotations
from functools import wraps
from typing import TYPE_CHECKING, Any, Callable, Sequence
from django import VERSION
from django.test import LiveServerTestCase, SimpleTestCase, TestCase, TransactionTestCase
USE_CONTRIB_MESSAGES = VERSION >= (5, 0)
if USE_CONTRIB_MESSAGES:
from django.contrib.messages import Message
from django.contrib.messages.test import MessagesTestMixin
class MessagesTestCase(MessagesTestMixin, TestCase):
pass
test_case = MessagesTestCase("run")
else:
test_case = TestCase("run")
def _wrapper(name: str):
func = getattr(test_case, name)
@wraps(func)
def assertion_func(*args, **kwargs):
return func(*args, **kwargs)
return assertion_func
__all__ = []
assertions_names: set[str] = set()
assertions_names.update(
{attr for attr in vars(TestCase) if attr.startswith("assert")},
{attr for attr in vars(SimpleTestCase) if attr.startswith("assert")},
{attr for attr in vars(LiveServerTestCase) if attr.startswith("assert")},
{attr for attr in vars(TransactionTestCase) if attr.startswith("assert")},
)
if USE_CONTRIB_MESSAGES:
assertions_names.update(
{attr for attr in vars(MessagesTestMixin) if attr.startswith("assert")},
)
for assert_func in assertions_names:
globals()[assert_func] = _wrapper(assert_func)
__all__.append(assert_func) # noqa: PYI056
if TYPE_CHECKING:
from django import forms
from django.http.response import HttpResponseBase
def assertRedirects(
response: HttpResponseBase,
expected_url: str,
status_code: int = ...,
target_status_code: int = ...,
msg_prefix: str = ...,
fetch_redirect_response: bool = ...,
) -> None: ...
def assertURLEqual(
url1: str,
url2: str,
msg_prefix: str = ...,
) -> None: ...
def assertContains(
response: HttpResponseBase,
text: object,
count: int | None = ...,
status_code: int = ...,
msg_prefix: str = ...,
html: bool = False,
) -> None: ...
def assertNotContains(
response: HttpResponseBase,
text: object,
status_code: int = ...,
msg_prefix: str = ...,
html: bool = False,
) -> None: ...
def assertFormError(
form: forms.BaseForm,
field: str | None,
errors: str | Sequence[str],
msg_prefix: str = ...,
) -> None: ...
def assertFormSetError(
formset: forms.BaseFormSet,
form_index: int | None,
field: str | None,
errors: str | Sequence[str],
msg_prefix: str = ...,
) -> None: ...
def assertTemplateUsed(
response: HttpResponseBase | str | None = ...,
template_name: str | None = ...,
msg_prefix: str = ...,
count: int | None = ...,
): ...
def assertTemplateNotUsed(
response: HttpResponseBase | str | None = ...,
template_name: str | None = ...,
msg_prefix: str = ...,
): ...
def assertRaisesMessage(
expected_exception: type[Exception],
expected_message: str,
*args,
**kwargs,
): ...
def assertWarnsMessage(
expected_warning: Warning,
expected_message: str,
*args,
**kwargs,
): ...
def assertFieldOutput(
fieldclass,
valid,
invalid,
field_args=...,
field_kwargs=...,
empty_value: str = ...,
) -> None: ...
def assertHTMLEqual(
html1: str,
html2: str,
msg: str | None = ...,
) -> None: ...
def assertHTMLNotEqual(
html1: str,
html2: str,
msg: str | None = ...,
) -> None: ...
def assertInHTML(
needle: str,
haystack: str,
count: int | None = ...,
msg_prefix: str = ...,
) -> None: ...
def assertJSONEqual(
raw: str,
expected_data: Any,
msg: str | None = ...,
) -> None: ...
def assertJSONNotEqual(
raw: str,
expected_data: Any,
msg: str | None = ...,
) -> None: ...
def assertXMLEqual(
xml1: str,
xml2: str,
msg: str | None = ...,
) -> None: ...
def assertXMLNotEqual(
xml1: str,
xml2: str,
msg: str | None = ...,
) -> None: ...
# Removed in Django 5.1: use assertQuerySetEqual.
def assertQuerysetEqual(
qs,
values,
transform=...,
ordered: bool = ...,
msg: str | None = ...,
) -> None: ...
def assertQuerySetEqual(
qs,
values,
transform=...,
ordered: bool = ...,
msg: str | None = ...,
) -> None: ...
def assertNumQueries(
num: int,
func=...,
*args,
using: str = ...,
**kwargs,
): ...
# Added in Django 5.0.
def assertMessages(
response: HttpResponseBase,
expected_messages: Sequence[Message],
*args,
ordered: bool = ...,
) -> None: ...
# Fallback in case Django adds new asserts.
def __getattr__(name: str) -> Callable[..., Any]: ...