[unittest] Run setUp only once

Jean-Paul Calderone exarkun at divmod.com
Tue Jul 29 10:49:17 EDT 2008


On Tue, 29 Jul 2008 16:35:55 +0200, Nikolaus Rath <nikolaus at rath.org> wrote:
>Hello,
>
>I have a number of conceptually separate tests that nevertheless need
>a common, complicated and expensive setup.
>
>Unfortunately, unittest runs the setUp method once for each defined
>test, even if they're part of the same class as in
>
>class TwoTests(unittest.TestCase):
>    def setUp(self):
>        # do something very time consuming
>
>    def testOneThing(self):
>
>
>    def testADifferentThing(self):
>
>
>which would call setUp twice.
>
>
>Is there any way to avoid this, without packing all the unrelated
>tests into one big function?
>

    class TwoTests(unittest.TestCase):
        setUpResult = None

        def setUp(self):
            if self.setUpResult is None:
                self.setUpResult = computeIt()

        ...

There are plenty of variations on this pattern.

Jean-Paul


>
>Best,
>
>   -Nikolaus
>
>--
> »It is not worth an intelligent man's time to be in the majority.
>  By definition, there are already enough people to do that.«
>                                                         -J.H. Hardy
>
>  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C
>
>--
>http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list