我有一个小功能,如下:
def write_snapshot_backup_monitoring_values():
try:
snapshot_backup_result = 'my result'
with open(config.MONITOR_SNAPSHOT_BACKUP_FILE, "w") as snapshot_backup_file:
snapshot_backup_file.write(snapshot_backup_result)
except Exception as exception:
LOG.exception(exception)
其中config.MONITOR_SNAPSHOT_BACKUP_FILE
在配置文件中声明为值= /home/result.log
当我尝试使用pytest编写测试用例时,我按如下方式调用此函数:
constants.MONITOR_SNAPSHOT_BACKUP_FILE = "/tmp/result.log"
@pytest.mark.functional_test
def test_write_snapshot_backup_monitoring_values():
utils.write_snapshot_backup_monitoring_values()...
我想用在测试用例文件中声明的config.MONITOR_SNAPSHOT_BACKUP_FILE
来修补constants.MONITOR_SNAPSHOT_BACKUP_FILE
的值。基本上,我希望在运行测试用例时,它应该创建/tmp/result.log
而不是/home/result.log
我该怎么做?我是python猴子修补的新手。
答案 0 :(得分:1)
您无需清除config
是什么,因此我认为它是您导入的另一个模块。猴子修补没有特定的技术,您只需分配值即可。它只是在运行时添加/修改属性的名称。
config.MONITOR_SNAPSHOT_BACKUP_FILE = constants.MONITOR_SNAPSHOT_BACKUP_FILE
但是,这里要记住一件事:Python缓存导入的模块。如果您更改此值,则对于已导入config
并在同一运行时中运行的其他python模块,它将更改。因此,请注意不要引起任何副作用。