我正在使用flask_sqlalchemy编写一些API的unitests,但是甚至认为db.drop_all
可以正常运行,但是在pytest测试中却行不通。
在以下代码中,setUp
中的testapp.py
不执行任何操作(它没有给出错误,因此也没有错误信息),以前的数据仍在数据集中,不是我想要测试。
谢谢。
我有app.py
:
def create_app():
app = Flask(__name__)
app.config.from_object(__name__)
Session(app)
cors = CORS(app, supports_credentials=True)
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = SQLALCHEMY_TRACK_MODIFICATIONS
# define some APIs
# ...
return app
app = create_app()
db = SQLAlchemy(app)
db.init_app(app)
在testapp.py
中:
from backend.app import app, db, User, Submission
class TestApp(unittest.TestCase):
def setUp(self):
db.session.remove()
db.drop_all()
db.create_all()
def test_post_users(self, client):
user_data = json.dumps({'nickname':NICKNAME, 'email':EMAIL, 'password':PASSWORD})
res = client.post('/users',
data=user_data,
content_type='application/json')
expected = {'success':'successfully registered!'}
assert expected == json.loads(res.data)
res2 = client.post('/users',
data=user_data,
content_type='application/json')
expected = {'error':'failed to register'}
assert expected == json.loads(res2.data)