Python unittest setUP временная БД - NameError: глобальное имя 'db' не определено - PullRequest
0 голосов
/ 15 февраля 2019

Используя tinyDB, приложение сохраняет данные в файл json.Мне нужно выполнить тестирование, если определенные данные уже содержатся в файле базы данных.

Я создаю альтернативную настройку базы данных в методе setUP в переменной db.Я получаю ошибку ниже.Почему переменная db недоступна для пространства имен в тестируемой функции?

При запуске unittest я получаю:

ERROR: test_contains (__main__.TestDB)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 65, in setUp
    print type(db)
NameError: global name 'db' is not defined

Код для тестирования в проекте / app / sandbox.py

from tinydb import TinyDB, Query
db = TinyDB('db.json')
Check_keyword = Query()

def test_db(keyword):
    if db.contains(Check_keyword.keyword == keyword ):
        print "keyword already in db"
        return True

Unittest в проекте / test.py

from tinydb import TinyDB, Query
from app.sandbox import test_db



class TestDB(unittest.TestCase):

    def setUp(self):
        self.db = TinyDB('test_db.json')    
        self.Check_keyword = Query()     

    def test_contains(self):
        data = "doctor salarybljkhl"
        result = test_db(data)
        self.assertEqual(result, True)

1 Ответ

0 голосов
/ 15 февраля 2019

Переменные db и Check_keyword находятся в вашем тестовом классе, на который тестируемый код не имеет ссылки.

(Также ваш тестируемый код, похоже, не использует свои импорты, поэтому лучше получитьизбавимся от них)

...