[TIP] How do I run the same test on many different classes?

Michał Kwiatkowski constant.beta at gmail.com
Sun Dec 13 12:23:30 PST 2009


On Sun, Dec 13, 2009 at 9:07 PM, Matthew Wilson <matt at tplus1.com> wrote:
> Copy and paste my TestTask for each Task1, Task2, etc, like this:
>
> class TestTask1(TestTask):
>    def setUp(self):
>        self.t = Task1()
>
> class TestTask2(TestTask):
>     def setUp(self):
>        self.t = Task2()

Try this:

import types
import sys

# TestTask...

for task in [Task1, Task2]:
    name = "TestTask%s" % Task1.__name__
    def setUp(self):
        self.t = task
    setattr(sys.modules[__name__], name, types.ClassType(name,
(TestTask,), {'setUp': setUp}))

A bit crude, I know, but should save you from copy&paste.

Cheers,
mk



More information about the testing-in-python mailing list