【发布时间】:2018-11-13 14:06:03
【问题描述】:
我有以下代码。
import yaml
def load_yaml_file(filename):
with open(filename, 'rt') as f:
data = yaml.load(f)
return data
有没有办法模拟 open 部分,以便 f 变为 '{"hello":"world"}',因此我可以断言数据已正确返回。
我尝试使用mock_open.return_value.__enter__.return_value = '{"hello":"world"}' 模拟打开,但无法正常工作。
我正在使用 pytest 和 mocker。
【问题讨论】:
-
与您的问题无关,但您确定您需要
yaml.load()并且yaml.safe_load()不会完成这项工作吗?即使您需要从标准 Python 库中加载特定对象,最好为 safe_loading 显式注册这些对象,而不是使用可能不安全的load() -
Anthon - 非常非常好的观点,感谢您指出这一点!
标签: python-3.x unit-testing mocking pytest