Flask-SQLAlchemy Unittest运行两次

时间:2017-11-14 23:29:21

标签: python unit-testing testing flask sqlalchemy

我已经设置了我的项目:

- proj/
  - proj.py
  - views.py
  - tests.py
  - models.py
  - settings.py
- setup.py

proj.py我定义了appdb

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

from proj import settings

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = settings.DATABASE
db = SQLAlchemy(app)

views只包含应用的钩子。 models包含SQLAlchemy模型。测试的相关部分:

from flask import Flask
from flask_testing import (
        TestCase,
        LiveServerTestCase,
        )

class SqlalchemyUnittest(TestCase):

    SQLALCHEMY_DATABASE_URI = "sqlite://"
    TESTING = True

    def create_app(self):
        proj.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'
        proj.app.config['PRESERVE_CONTEXT_ON_EXCEPTION'] = False
        proj.app.config['TESTING'] = True
        proj.app.config['DEBUG'] = True
        proj.app.testing = True
        proj.app.debug = True
        return proj.app

    def setUp(self):
        proj.db.create_all()

    def tearDown(self):
        proj.db.session.remove()
        proj.db.drop_all()

class TestSomething(SqlalchemyUnittest):

    def test_something(self):
        self.assertEqual(1, 1)

然后在实际执行中......

test_something (proj.tests.TestSomething) ... ok
test_something (proj.tests.TestSomething) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.010s

OK

奇怪的是,在某些测试中,它们通过其中一个运行,但在另一个运行中失败,尽管测试独立于环境(例如数据库状态)。看起来似乎有.pyc个文件,但我已经删除了所有.pyc个文件和__pycache__目录,但仍然得到相同的结果。

任何想法为什么?感谢。

tl; dr Python单元测试运行两次,有时会产生不同的结果。

1 个答案:

答案 0 :(得分:0)

我认为问题是旧的pyc文件和 pycache 目录都在闲逛。

删除它们似乎解决了这个问题。