我已经设置了我的项目:
- proj/
- proj.py
- views.py
- tests.py
- models.py
- settings.py
- setup.py
在proj.py
我定义了app
和db
:
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单元测试运行两次,有时会产生不同的结果。
答案 0 :(得分:0)
我认为问题是旧的pyc文件和 pycache 目录都在闲逛。
删除它们似乎解决了这个问题。