我想在framework Flask中执行这样的测试,并得到消息:
InvalidRequestError: Instance '<User at 0x7f65938a7510>' is not persisted
File "tests.py", line 31, in test_removeProfil
db.session.delete(user)
我的测试代码:
class TestCase(unittest.TestCase):
def test_removeProfil(self):
user = User(name="John", age=33, email="john@john.com")
db.session.delete(user)
db.session.commit()
self.assertNotEqual(user.name, "John")
self.assertNotEqual(user.age, 33)
self.assertNotEqual(user.email, "john@john.com")
您正在尝试删除一个新实例,而不是从数据库中获取的实例。要么你打算使用
db.session.add()
,要么你打算使用user = User.query.filter_by(email='john@john.com').first()
(或类似的东西)并删除它。您还可能在访问已删除实例的属性时遇到问题(假设您如上所述正确删除了该实例)。提交会话时,该会话中的所有实例都将过期。尝试访问过期的属性会触发数据库查找,但不能查找此对象,因为它已被删除。
您可以关闭^{} ,但这不是正常行为,可能会导致其他问题。
您也可以尝试在上面调用^{} 。
最终,您应该放弃已删除的实例。也许有更好的方法去做你想做的事情。
当你打电话
创建python对象,而不是db中的对象。所以你需要先把它添加到数据库
之后你可以从数据库中删除它
你的
assertNotEqual
毫无意义。您应该测试delete之前和之后select from db的结果是否不同相关问题 更多 >
编程相关推荐