Я работаю над написанием некоторых тестов для приложения 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 "<xml/>", 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"
.....
Я сделал monkeypatch
для некоторых методов внутри XMLOutputBuilder
чтобы проверить сценарий ошибки ios. Я ожидал, что мои фиктивные методы будут возвращать значения на основе входящих параметров, но это не так. Я понимаю, что такое поведение связано с тем, что макеты и приборы загружаются только один раз, и их нельзя изменить дальше (поправьте меня, если я ошибаюсь).
Есть ли другие способы заставить этот сценарий работать? Или я должен написать отдельные методы испытаний для параметров?