Код: Выделить всё
def test_valid_type(monkeypatch):
mapping = {
10: True,
89: True,
120: False,
121: False,
}
monkeypatch.setattr(eligibility, "fetch_valid_types", lambda key: mapping.get(key))
assert eligibility.is_invalid(10) is False
assert eligibility.is_invalid(89) is False
assert eligibility.is_invalid(120) is True
assert eligibility.is_invalid(121) is True
Я пытаюсь переместить этот обезьяний патч в метод set_up, чтобы сделать насмешку многоразовой. У меня есть этот класс:
Код: Выделить всё
class TestHelper():
def mock_valid(monkeypatch):
mapping = {
10: {"accessibleDeliveryLocationTypes": ["a"]},
89: {"accessibleDeliveryLocationTypes": ["b"]},
120: {"accessibleDeliveryLocationTypes": []},
121: {"accessibleDeliveryLocationTypes": []},
}
monkeypatch.setattr(routes.eligibility, "nypl_core_patron_types", lambda key: mapping.get(key))
@classmethod
def set_up(cls, monkeypatch):
cls.mock_valid(monkeypatch)
GlobalLogger.initialize_logger(__name__)
Я знаю, что это невоспроизводимый пример. Меня меньше интересует эта работа, а больше пытаюсь узнать больше о пространствах имен и автоматических определениях pytest.
Может ли кто-нибудь объяснить процесс, который pytest проходит во время выполнения для заполнения параметров тестовой функции? Это похоже на объединение моего понимания параметров (имен переменных, присвоенных значениям, которые, как ожидается, будут переданы в функцию) и аргументов (фактические заполненные значения, передаваемые при вызове этой функции). Есть ли где-нибудь документированный список этих встроенных приборов, которые не нужно импортировать, и с предопределенными параметрами? Наконец, я полагаю, что в какой-то момент их действительно нужно будет внедрить в функцию. Где это происходит? Являются ли они только в глобальном масштабе? или pytest действительно передает их в какой-то момент?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ts-defined
Мобильная версия