【发布时间】:2019-05-09 23:14:44
【问题描述】:
我正在尝试使用 pytest 和 monkeypatch 对使用第三方数据集成包的方法进行单元测试。
这是一些示例伪代码:
from third_party.data_integration import Account
def fetch_data():
account_id = "123"
account_token = "234"
account = Account(account_id, account_token)
account.download('path')
return True
我希望在我的测试文件中做一些类似的事情来猴子补丁 download 实例函数:
def test_fetch_data(monkeypatch):
def download():
return '123'
with monkeypatch.context() as m:
m.setattr('third_party.data_integration.Account.download', download)
assert fetch_data() == True
显然,m.setattr('third_party.data_integration.Account.download', download) 仅适用于静态方法,而不适用于实例方法或类方法。像这样对第三方原生包实例方法进行猴子补丁测试的最佳实践是什么?
【问题讨论】:
标签: python pytest monkeypatching