Web2py中的单元测试

时间:2010-05-04 01:39:19

标签: unit-testing controller web2py

我按照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中成功完成了这样的单元测试?

2 个答案:

答案 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将形成包/模块层次结构。