3

我正在按照这篇文章的说明进行操作,但无法让我的方法在全球范围内得到认可。

错误信息:

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

4

2 回答 2

3

请参阅:http ://web2py.com/AlterEgo/default/show/260

请注意,在您的示例中,函数“suggest_flavors”应在“applications/myapp/controllers/search.py​​”中定义。

于 2010-05-04T05:08:26.130 回答
0

我对 web2py 没有任何经验,但经常使用其他框架。看着你的代码,我有点困惑。是否有客观理由execfile应该使用?使用常规导入语句不是更好吗?所以execfile你可以写:

from applications.myapp.controllers.search import suggest_flavors

对于 pythoners 来说,这是更清晰的代码。

请注意,__init__.py在这种情况下,您应该沿着路径放置在每个目录中,以便 dirs 将形成包/模块层次结构。

于 2010-05-04T19:06:24.543 回答