[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

unittest.Testsuite and execution order


I'm reading the documentation of unittest.TestSuite (Python 2 and 3), but I
can't find any explicit sentence stating that TestSuite will honor the
order. I can only read that TestSuite can group test cases together. Please
blame it on my poor English skills if I'm not interpreting the
documentation correctly.

My use case: my SUT is split into modules. Besides writing unit tests for
each module, I want to write an integration test, and I also need to
perform some actions between two calls to the SUT. In my case, the order of
the execution is important.

Now, the current implementation of TestSuite uses a list, internally, so,
today, the order is honored if I create a TestSuite calling addTest() in
the proper order, or if I pass a list to the constructor. I've seen
examples like this:

class MyTestCode(unittest.TestCase):
   def test_func_1(self):
      # do something to test func_1 on the SUT

   def perform_intermediate_step(self):
      # do something between func_1 and func_2

   def test_func_2(self):
      # do something to test func_2 on the SUT

suite = unittest.TestSuite()

Such an example works, today, since TestSuite uses a list, and addTest()
appends to the list.
My question is: is this something that I can rely on for the future? I
definitely don't want to rely on the current implementation, unless I see
it in the documentation.

If it's something that I can't rely on for the future, then I'd rather
write my test code in a different way.


P.S.: I strongly believe that there are better ways to implement a test
like the one I just described, but what I'm interested in now is whether
TestSuite is meant to be future-proof for such a case.

Francesco Russo
The White Rabbit put on his spectacles. 'Where shall I begin, please your
Majesty?' he asked.
'Begin at the beginning,' the King said gravely, 'and go on till you come
to the end: then stop.'