在测试应用程序中测试sqlalchemy更新

时间:2016-07-01 19:29:53

标签: python session flask sqlalchemy

我有一个Flask应用程序,它在mysql数据库上执行操作。它使用sqlalchemy,并根据请求创建会话。在我的测试框架中,我设置了一个会话,然后插入适当的数据并确保之后删除。但是,在我的测试中,当我尝试确保某些内容被删除时(通过对我的Flask应用程序的DELETE请求),我的会话中的行不受外部线程的影响。我是否需要关闭并重新打开我的会话以确保正确删除,或者我能以某种方式刷新它,或者我是否以某种方式完全错误地将其丢失?

class Endpoint(flask_restful.Resource):
    # in the webapp thread
    def delete(self,id):
        db.session.query(db.Table).filter(id=id).delete()
        db.session.commit()

class Test(unittest.TestCase):
    # in the testing thread
    def setUp(self):
        self.data = db.session.add(db.Table())
        db.session.commit()
    def tearDown(self):
        self.data.delete()
        db.session.commit()
    def test_delete(self):
        requests.delete(flask.url_for(Endpoint, id=self.data.id))
        assert db.session.query(db.Table).filter(id = self.data.id).count() == 0

0 个答案:

没有答案