Методы pytest Monkeypatch с возвращаемыми значениями из параметризованного методаPython

Программы на Python
Ответить
Anonymous
 Методы pytest Monkeypatch с возвращаемыми значениями из параметризованного метода

Сообщение Anonymous »

Я работаю над написанием нескольких тестов для приложения Python с помощью платформы pytest. У меня возникла проблема в одном из тестов, и я не уверен, как она работает.

пример:

Код: Выделить всё

@pytest.mark.parametrize("result, status, xml_err, xml_status",[
("PASS",True,False,"XML_ERROR"),
("Validation error", False, False, "XML_ERROR")
])
def test_xml_build_neg(self, monkeypatch,result, status, xml_err, xml_status):

def validate(self):
return status, result, {}

def transform(self, v_dict):
return "", 50.0, xml_status, xml_err

monkeypatch.setattr(DataValidator, "validate", validate)
monkeypatch.setattr(XMLTransformer, "transform", transform)

o_result, o_status, o_xml_err, o_xml_status= XMLOutputBuilder().build(ExtractionResult(), "test", b"test")

assert o_result == result, "Validation results not matching"
assert o_status == status, "Validation Status not matching"
.....
Я выполнил обезьяний патч для некоторых методов в моем XMLOutputBuilder, чтобы протестировать некоторые сценарии ошибок. Я ожидал, что мои фиктивные методы будут возвращать значения на основе входящих параметров, но этого не произошло. Я понимаю, что такое поведение связано с тем, что макеты и приспособления загружаются только один раз, и его нельзя изменить в дальнейшем (поправьте меня, если я ошибаюсь).

Есть ли какие-либо другие способы заставить этот сценарий работать? Или мне придется писать отдельные методы тестирования для параметров?

Подробнее здесь: https://stackoverflow.com/questions/606 ... zed-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»