Contributors mailing list archives
contributors@odoo-community.org
Browse archives
Odoo Test framework and rollback issue
by
        
            DEC, Yann Papouin
        
        
        
    
        
        Hi everyone,
I'm currently developing on 14.0 a test for one of my module and I'm having a headache trying to understand why an action is not properly rolled back after the exception is raised.
My code sample:
class TestSoftwareLicensePass(TransactionCase):
def test_activation(self):
...
self.assertEqual(pass_lic1.get_remaining_activation(), 1)
with self.assertRaisesRegex(ValidationError, r"Max activation reached"):
pass_lic1.activate("device_uuid_4/3")
self.assertEqual(pass_lic1.get_remaining_activation(), 1)
with self.assertRaisesRegex(ValidationError, r"Max activation reached"):
pass_lic1.activate("device_uuid_4/3")
def test_activation(self):
...
self.assertEqual(pass_lic1.get_remaining_activation(), 1)
with self.assertRaisesRegex(ValidationError, r"Max activation reached"):
pass_lic1.activate("device_uuid_4/3")
self.assertEqual(pass_lic1.get_remaining_activation(), 1)
with self.assertRaisesRegex(ValidationError, r"Max activation reached"):
pass_lic1.activate("device_uuid_4/3")
The second 
assertEqual
statement FAILS because 
get_remaining_activation() returns 0, but since the exception has been correctly captured by the 
with self.assertRaisesRegex
 statement, this part should have been rolled back by the odoo framework.
(and no cr.commit in the activate function)
Looking in other tests, I can see that a lot of with self.assert statements have a self.cr.savepoint() at their side (like this code sample in odoo/odoo/addons/base/tests/test_views.py):
class TestViewInheritance(ViewCase):
    def test_no_recursion(self):
r1 = self.makeView('R1')
with self.assertRaises(ValidationError), self.cr.savepoint():
r1.write({'inherit_id': r1.id})
r1 = self.makeView('R1')
with self.assertRaises(ValidationError), self.cr.savepoint():
r1.write({'inherit_id': r1.id})
Is this related to the
TransactionCase
 class ? (Probably not, I made a test with SavepointCase and same issue)
Should I always append self.cr.savepoint()
 ?
Yann.
Follow-Ups
- 
                
- 
                Re: Odoo Test framework and rollback issuebyTecnativa. S. L., Pedro M. Baeza- 17/11/2023 13:39:03 - 0
- 
                Re: Odoo Test framework and rollback issuebyAcsone SA/NV, Laurent Mignon- 16/11/2023 08:46:01 - 0
- 
                Re: Odoo Test framework and rollback issuebyTecnativa. S. L., Pedro M. Baeza- 15/11/2023 18:34:58 - 0