Как unittest.mock.patch.dict восстанавливает словарь после выхода из контекста, если тест изменил его содержимое?
База Hintsage
Тестирование
pytest, fixtures, mocks и организация тестов.
Практика
Вопросы: Тестирование
Зачем pytest рассматривает conftest.py как локальный плагин, а не как обычный модуль тестового проекта?
Гарантирует ли pytest порядок выполнения тестов между разными тестовыми функциями?
В тесте нужно подменить отсутствующий атрибут конкретного объекта. Что произойдёт при использовании create=True?
from unittest.mock import patch
class Service:
def run(self):
return self.send()
service = Service()
def test_run():
with patch.object(service, "send", return_value="fake", create=True):
assert service.run() == "fake"
assert not hasattr(service, "send")
При параметризации pytest зачем задавать явные ids для параметров?
При подмене класса через unittest.mock.patch что получит код при создании экземпляра внутри тестируемой функции?
Разработчик проверяет исходные аргументы мока после изменения переданного словаря. Как завершится тест и почему?
from unittest.mock import Mock
save = Mock()
data = {"status": "new"}
save(data)
data["status"] = "sent"
save.assert_called_once_with({"status": "new"})
При пустом наборе параметров pytest помечает тест как пропущенный или считает это ошибкой?
В одной pytest-фикстуре зарегистрировали два финализатора через request.addfinalizer. В каком порядке pytest выполнит их?
Проверьте поведение проверки сообщения исключения: пройдёт ли этот тест, хотя шаблон не совпадает со всей строкой?
import pytest
def parse_port(value):
if not value.isdigit():
raise ValueError(f"invalid port: {value}")
def test_parse_port():
with pytest.raises(ValueError, match="port: 80"):
parse_port("8080x")
Вам нужно временно изменить окружение только на часть одного теста, чтобы после неё проверить исходное состояние. Какой механизм pytest monkeypatch обеспечивает ранний откат изменений?
В цепочке зависимых фикстур pytest какая фикстура освобождается первой: зависимость или фикстура, использующая её?
В чём состоит поведение не настроенного атрибута Mock при повторном обращении к нему?
В тестовом проекте helper импортируют из другого test-модуля: какой главный риск создаёт такая организация?
Как pytest трактует маркер, установленный на тестовом классе, при сборке методов этого класса?
Рассмотрите сессионную фикстуру pytest, параметризованную двумя значениями: сколько экземпляров фикстуры получит тестовая сессия?
Практическая ситуация: фикстура должна выполниться для теста, но её результат не нужен в теле теста. Как pytest подключит её в этом примере?
import pytest
@pytest.fixture
def audit_log():
print("setup")
yield
print("teardown")
@pytest.mark.usefixtures("audit_log")
def test_report():
assert True
В этом тесте определите результат второго запуска параметризации и объясните причину.
import pytest
shared = {"items": []}
@pytest.mark.parametrize("case", [shared, shared])
def test_append(case):
case["items"].append("x")
assert len(case["items"]) == 1
Когда pytest создаёт package-scoped фикстуру и когда освобождает её?
Откуда create_autospec берёт сигнатуру метода экземпляра и почему при вызове такого mock-метода не передают self вручную?
Показано 1–20 из 50