Unittest setUp/tearDown for several tests
python, unit-testing
Solution
As of 2.7 (per the documentation) you get `setUpClass` and `tearDownClass` which execute before and after the tests in a given class are run, respectively. Alternatively, if you have a group of them in one file, you can use `setUpModule` and `tearDownModule` (documentation).
EDIT: Note that `setUpClass` and `tearDownClass` must be declared using `@classmethod`. Another answer to this question includes sample code.
Otherwise your best bet is probably going to be to create your own derived TestSuite and override `run()`. All other calls would be handled by the parent, and run would call your setup and teardown code around a call up to the parent's `run` method.
Problem
Is there a function that is fired at the beginning/end of a scenario of tests? The functions setUp and tearDown are fired before/after every single test. I typically would like to have this: ``` class TestSequenceFunctions(unittest.TestCase): def setUpScenario(self): start() #launched at the beginning, once def test_choice(self): element = random.choice(self.seq) self.assertTrue(element in self.seq) def test_sample(self): with self.assertRaises(ValueError): random.sample(self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) def tearDownScenario(self): end() #launched at the end, once ``` For now, these setUp and tearDown are unit tests and spread in all my scenarios (containing many tests), one is the first test, the other is the last test.