gpt4 book ai didi

python - Python 的 MiniMock 可以创建在同一文件中定义的函数的模拟吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:57 25 4
gpt4 key购买 nike

我正在使用 Python MiniMock用于单元测试的库。我想模拟一个在与我的 doctest 相同的 Python 文件中定义的函数。 MiniMock 可以处理吗?天真的方法失败了:

def foo():
raise ValueError, "Don't call me during testing!"

def bar():
"""
Returns twice the value of foo()

>>> from minimock import mock
>>> mock('foo',returns=5)
>>> bar()
Called foo()
10

"""
return foo() * 2

if __name__ == "__main__":
import doctest
doctest.testmod()

如果我尝试运行此代码,会发生以下情况:

**********************************************************************
File "test.py", line 9, in __main__.bar
Failed example:
bar()
Exception raised:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/doctest.py", line 1212, in __run
compileflags, 1) in test.globs
File "<doctest __main__.bar[2]>", line 1, in <module>
bar()
File "test.py", line 13, in bar
return foo() * 2
File "test.py", line 2, in foo
raise ValueError, "Don't call me!"
ValueError: Don't call me!
**********************************************************************
1 items had failures:
1 of 3 in __main__.bar
***Test Failed*** 1 failures.

编辑:根据下面的回答,这已被确定为一个错误,并且已被 fixed in MiniMock .

最佳答案

我刚刚在邮件列表中回复了修复此问题的 MiniMock 补丁。

直到它被应用,而不是 itsadok 的代码片段中的以下两行:

>>> mock('foo',returns=5)
>>> bar.func_globals['foo'] = foo

你也可以用

>>> mock('foo', nsdicts=(bar.func_globals,), returns=5)

关于python - Python 的 MiniMock 可以创建在同一文件中定义的函数的模拟吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462381/

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