Python 3.x 模拟session.add并返回数据库表生成的主键

Python 3.x 模拟session.add并返回数据库表生成的主键,python-3.x,sqlalchemy,mocking,Python 3.x,Sqlalchemy,Mocking,我试图模拟sqlalchemy session.add,这样当我插入session.add(order)并提交它时,它会返回order.orderId,我将使用它进一步扩展测试用例 session.add(order) session.commit() return order.orderId 我已经模拟了sessionMaker,即mocker.patch.object(文件名,“create\u pgdb\u engine”)它返回我mock,但我得到

我试图模拟sqlalchemy session.add,这样当我插入session.add(order)并提交它时,它会返回order.orderId,我将使用它进一步扩展测试用例

   session.add(order)
        session.commit()
        return order.orderId
我已经模拟了sessionMaker,即
mocker.patch.object(文件名,“create\u pgdb\u engine”)
它返回我mock,但我得到了如下错误


实例具有空标识密钥。如果这是一个自动生成的值,请检查数据库表是否允许生成新的主键值,以及映射的列对象是否配置为期望这些生成的值。还要确保此flush()未在不适当的时间发生,例如在order()事件中。

尝试模拟较低级别的数据库组件以创建模拟对象可能不是很好的测试策略。如果您试图为了单元测试的目的模拟sqlalchemy对象,请查看。查看如何使用sqlalchemy和FactoryBoy构建测试框架的示例

谢谢..我肯定会引用它…现在我模拟了方法调用,该调用返回了带有特定值的orderid,而不是像您已经建议的那样尝试深度模拟。