Модульное тестирование в Web2py - PullRequest
2 голосов
/ 04 мая 2010

Я следую инструкциям этого поста , но не могу распознать мои методы во всем мире.

Сообщение об ошибке:

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 ]

3 голосов
/ 04 мая 2010

Пожалуйста, смотрите: http://web2py.com/AlterEgo/default/show/260

Обратите внимание, что в вашем примере функция 'offer_flavors' должна быть определена в 'application / myapp / controllers / search.py'.

0 голосов
/ 04 мая 2010

У меня нет опыта работы с web2py, но я часто использовал другие фреймворки. И, глядя на твой код, я немного запутался. Есть ли объективная причина, по которой следует использовать execfile? Не лучше ли использовать обычный оператор импорта. Поэтому вместо execfile вы можете написать:

from applications.myapp.controllers.search import suggest_flavors

Это более понятный код для питона.

Обратите внимание, что в этом случае вы должны поместить __init__.py в каждый каталог по пути, чтобы каталоги формировали иерархию пакетов / модулей.

...