如果我定义我的功能如下:
def myfunc(arg1, arg2):
pass
Run Code Online (Sandbox Code Playgroud)
然后myfunc == myfunc会回来True
但functools.partial(myfunc, arg2=1) == functools.partial(myfunc, arg2=1)会回来False.
为了单元测试的目的,是否有一种简单的方法来测试部分功能是否是我期望的功能?
Mar*_*ers 10
如果测试的func,args并且keywords属性是相同的:
p1.func == p2.func and p1.args == p2.args and p1.keywords == p2.keywords
Run Code Online (Sandbox Code Playgroud)
where p1和p2are都是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
Run Code Online (Sandbox Code Playgroud)
Python跟踪器中存在一个错误,用于向partial对象添加相等性测试,但基本上没有使用__eq__方法会影响函数的行为,但是如果它们的id()匹配也是相等的,它就被拒绝了.