我有以下文件,并且我正在此文件上运行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'