希望是一个简单的问题,但文档或web2py书籍中似乎没有涵盖这个问题……
我有一个web2py控制器方法,看起来像这样:
def mymethod():
'''
doctests go here
'''
param1 = request.vars['param1']
param2 = request.vars['param2']
param3 = request.vars['param3']
# Stuff happens...
return dict(result=result)
并根据文档将参数作为请求变量传递
有没有办法构建一个文档测试(与方法定义内联)来评估调用的返回值,比如mymethod(param1=9, param2='a', param3=3.7)
提前感谢
发布于 2012-05-03 22:22:50
只需将所需的值放入文档测试的request.vars中:
def mymethod():
'''
>>> request.vars.update(param1=9, param2='a', param3=3.7)
>>> mymethod()
[expected output of mymethod goes here]
'''
要获得正确的文档测试,您可以在web2py shell中尝试,您可以按如下方式开始:
python web2py.py -S myapp/mycontroller -M -N
这将在一个执行了应用程序模型文件的环境中为您提供一个Python shell (这就是-M选项的作用)。因为指定了mycontroller,所以您还可以调用mycontroller中的任何函数。在shell中运行一些命令,然后将会话粘贴到您的文档字符串中。
发布于 2013-04-17 22:45:24
除了@Anthony提供的优秀示例之外,我还尝试使用urllib2.urlopen(...)在测试restful服务时。从文档的角度来看,代码并不是很整洁,但它是有效的。
@request.restful()
def api():
'''The following code demostrates how to interact with this api via python.
>>> import urllib2, urllib, httplib, json
>>> host = 'localhost:8000'
>>> func = 'api' # Otherwise request.function is NOT current function name during doctest
>>> base = 'http://%s/%s/%s/%s' % (host, request.application, request.controller, func)
Read all stuff.
>>> json.load(urllib2.urlopen(base))
{u'content': []}
Create an entries.
>>> p = {'name': 'Peter Pan', 'address': 'Neverland',}
>>> r = json.load(urllib2.urlopen(base, urllib.urlencode(p)))
>>> r['id'] > 0 and r['errors'] == {} # typically as {'errors': {}, 'id': 1}
True
blah blah
'''
# the function body goes here
https://stackoverflow.com/questions/10432488
复制相似问题