Flask модульный тест не может подключиться к базе данных sqlite при выполнении тестов - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь запустить свои модульные тесты для моего приложения flask, однако я не могу подключиться к базе данных, которую я использую для своего реального приложения, когда импортирую свое приложение здесь:

from main import app

выдаёт мне эту ошибку:

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py", line 35, in <module>
    main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/main.py", line 100, in __init__
    self.parseArgs(argv)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/main.py", line 147, in parseArgs
    self.createTests()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/main.py", line 159, in createTests
    self.module)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py", line 220, in loadTestsFromNames
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py", line 220, in <listcomp>
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py", line 154, in loadTestsFromName
    module = __import__(module_name)
  File "/Users/abbaslawal/Desktop/honours-project/tests/test_main.py", line 16, in <module>
    from main import app
  File "/Users/abbaslawal/Desktop/honours-project/main.py", line 65, in <module>
    conn = sqlite3.connect('Database/database.db', check_same_thread=False)
sqlite3.OperationalError: unable to open database file

Единственный способ, которым я могу на самом деле получить ошибку на go, - это изменить путь файла к базе данных в приложении, которое я хочу протестировать, но не хочу делать это каждый раз, когда я хочу запустить модульные тесты.

Приветствия

1 Ответ

0 голосов
/ 14 апреля 2020

Поскольку вы используете относительный путь в main.py, ваше тестовое приложение не может найти файл. Если вы используете абсолютный путь вместо относительного, он должен работать независимо от того, откуда выполняется ваш скрипт.

Относительный:

conn = sqlite3.connect('Database/database.db', check_same_thread=False)

Абсолютный:

conn = sqlite3.connect('/Users/abbaslawal/Desktop/honours-project/Database/database.db', check_same_thread=False)
...