class TestTransaction(BaseVedisTestCase): def setUp(self): self.db = Vedis('test.db') def tearDown(self): try: self.db.close() finally: if os.path.exists('test.db'): os.unlink('test.db') def test_transaction(self): self.db['k1'] = 'v1' @self.db.commit_on_success def succeed(): self.db['k2'] = 'v2' @self.db.commit_on_success def fail(): self.db['k3'] = 'v3' raise Exception('uh-oh') succeed() self.assertEqual(self.db['k2'], b'v2') self.assertRaises(Exception, fail) self.assertFalse(self.db.exists('k3')) def test_base_transaction_methods(self): self.db.begin() self.db['k1'] = 'v1' self.db.rollback() self.assertFalse(self.db.exists('k1'))