【问题标题】:Flask unit test can't connect to sqlite database when running tests运行测试时,Flask单元测试无法连接到sqlite数据库
【发布时间】:2020-04-13 17:38:08
【问题描述】:

我正在尝试为我的烧瓶应用程序运行我的单元测试,但是当我在这里导入我的应用程序时,我似乎无法连接到我用于实际应用程序的数据库:

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

我实际上可以消除错误的唯一方法是在我要测试的应用程序中更改数据库的文件路径,但我不想每次运行单元测试时都这样做。

干杯

【问题讨论】:

    标签: python sqlite unit-testing flask python-unittest


    【解决方案1】:

    因为您在 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)
    

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 1970-01-01
      • 2018-08-11
      • 2021-03-19
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2016-03-23
      • 2012-01-17
      相关资源
      最近更新 更多