flask_sqlalchemy drop_all在单项测试中不起作用

时间:2018-07-10 01:42:12

标签: flask-sqlalchemy pytest

我正在使用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)

0 个答案:

没有答案