gpt4 book ai didi

python 单元测试错误模块

转载 作者:行者123 更新时间:2023-11-28 21:31:37 24 4
gpt4 key购买 nike

我有一个模块需要在 python 中测试。

我正在使用单元测试框架,但遇到了问题。

该模块有一些方法定义,其中一个在导入时使用(readConfiguration),如下所示:

.
.
.
def readConfiguration(file = "default.xml"):
# do some reading from xml

readConfiguration()

这是一个问题,因为当我尝试导入模块时,它还会尝试运行“readConfiguration”方法,这会使模块和程序失败(测试环境中不存在配置文件)。

我希望能够独立于任何配置文件测试模块。

模块不是我写的,它不能被重构。

我知道我可以包含一个虚拟配置文件,但我正在寻找一个“更干净”、更优雅的解决方案。

最佳答案

正如评论者已经指出的那样,导入永远不应该有副作用,所以如果可能的话,尽量改变模块。

如果你真的、绝对不能这样做,可能还有另一种方法:让readConfiguration()被调用,但去掉它的依赖。例如,如果它使用内置的 open()函数,您可以模拟它,如 mock documentation 中所示:

>>> mock = MagicMock(return_value=sentinel.file_handle)
>>> with patch('builtins.open', mock):
... import the_broken_module
... # do your testing here

替换sentinel.file_handleStringIO("<contents of mock config file>")如果您需要提供实际内容。

它很脆弱,因为它取决于 readConfiguration() 的实现,但如果真的没有其他办法,作为最后的手段可能会有用。

关于python 单元测试错误模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206897/

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