如果我定义我的函数如下:
def myfunc(arg1, arg2):
pass
然后 myfunc == myfunc
将返回 True
但是 functools.partial(myfunc, arg2=1) == functools.partial(myfunc, arg2=1)
将返回 False
。
为了单元测试的目的,有没有一种简单的方法来测试部分函数是否是我期望的?
最佳答案
测试func
、args
和keywords
属性是否相同:
p1.func == p2.func and p1.args == p2.args and p1.keywords == p2.keywords
其中 p1
和 p2
都是 partial()
对象:
>>> from functools import partial
>>> def myfunc(arg1, arg2):
... pass
...
>>> partial(myfunc, arg2=1).func == partial(myfunc, arg2=1).func
True
>>> partial(myfunc, arg2=1).args == partial(myfunc, arg2=1).args
True
>>> partial(myfunc, arg2=1).keywords == partial(myfunc, arg2=1).keywords
True
有一个bug filed in the Python tracker向本质上执行此操作的 partial
对象添加相等性测试,但由于没有 __eq__
方法会影响函数的行为而被拒绝,函数的行为也只是相等的如果他们的 id()
匹配。
关于python - 如何将包装函数与 functools.partial 进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786078/