我按照this post的说明操作,但无法全局识别我的方法。
错误消息:
ERROR: test_suggest_performer (__builtin__.TestSearch)
----------------------------------------------------------------------
Traceback (most recent call last):
File "applications/myapp/tests/test_search.py", line 24, in test_suggest_performer
suggs = suggest_flavors("straw")
NameError: global name 'suggest_flavors' is not defined
我的测试文件:
import unittest
from gluon.globals import Request
db = test_db
execfile("applications/myapp/controllers/search.py", globals())
class TestSearch(unittest.TestCase):
def setUp(self):
request = Request()
def test_suggest_flavors(self):
suggs = suggest_flavors("straw")
self.assertEqual(len(suggs), 1)
self.assertEqual(suggs[0][1], 'Strawberry')
我的控制器:
def suggest_flavors(term):
return []
有没有人在web2py中成功完成了这样的单元测试?
答案 0 :(得分:3)
请参阅:http://web2py.com/AlterEgo/default/show/260
请注意,在您的示例中,函数'suggest_flavors'应在'applications / myapp / controllers / search.py'中定义。
答案 1 :(得分:0)
我对web2py没有任何经验,但是经常使用其他框架。看着你的代码我有点困惑。是否有客观原因应该使用execfile
?使用常规import语句不是更好。所以代替execfile
你可以写:
from applications.myapp.controllers.search import suggest_flavors
pythoners的代码更清晰。
请注意,在这种情况下,您应该在路径的每个目录中放置__init__.py
,这样dirs将形成包/模块层次结构。