gpt4 book ai didi

python-3.x - Pytest - 如何模拟或修补全局变量

转载 作者:行者123 更新时间:2023-12-04 16:46:09 27 4
gpt4 key购买 nike

我有以下文件,我正在这个文件上运行 pytests。用例之一是测试全局记录器功能。我们如何在我的 pytest 中模拟这个?

import spark_fn

def run_job(params):
do_something()
logger.info("some info")

def main(params):
global logger
app_name = "test app"
spark, logger = spark_fn(app_name)
run_job(params)

if __name__ == "__main__":
params = "some params"
main(params)


===============================================================

最佳答案

这样的事情怎么样?你不应该把它想象成一个全局变量,而更像是修补什么 spark_fn正在返回一个“假”记录器类。我也很好奇你如何使用 spark_fn模块整体以及您如何导入它。

import yoursampletest

def test_monkeytest(monkeypatch):
"""
Monkey patches a fake logger into spark_fn
"""
class myFakeLogger:

def info(self, value):
return value

def mock_info(mylogstatement):
return 1, myFakeLogger()

monkeypatch.setattr(yoursampletest, 'spark_fn', mock_info)

assert yoursampletest.main(1) == 'some info'

关于python-3.x - Pytest - 如何模拟或修补全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60282085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com