doctest 中的这段代码在单独运行时有效,但在这个 doctest 中它在 10 个地方失败。我不知道为什么会这样。以下是整个模块:
class requireparams(object):
"""
>>> @requireparams(['name', 'pass', 'code'])
>>> def complex_function(params):
>>> print(params['name'])
>>> print(params['pass'])
>>> print(params['code'])
>>>
>>> params = {
>>> 'name': 'John Doe',
>>> 'pass': 'OpenSesame',
>>> #'code': '1134',
>>> }
>>>
>>> complex_function(params)
Traceback (most recent call last):
...
ValueError: Missing from "params" argument: code
"""
def __init__(self, required):
self.required = set(required)
def __call__(self, params):
def wrapper(params):
missing = self.required.difference(params)
if missing:
raise ValueError('Missing from "params" argument: %s' % ', '.join(sorted(missing)))
return wrapper
if __name__ == "__main__":
import doctest
doctest.testmod()