Function decorator which adds a TestCase to the Suite

            >>> s = Suite()
            >>> @s.it('always passes')
            ... def _(): pass
            >>> list(s.nodes())
            [<Container: root>, <TestCase:  always passes>]


        `repeat` will add multiple test cases with extra parameters.

            >>> s = Suite()
            >>> @s.it('a={} b={}', repeat=[(1, 2), (3, 4)])
            ... def _(a, b): pass
            >>> list(s.nodes())
            [<Container: root>, <TestCase:  a=1 b=2>, <TestCase:  a=3 b=4>]

def it(self, message, repeat=None):
        '''
        Function decorator which adds a TestCase to the Suite

            >>> s = Suite()
            >>> @s.it('always passes')
            ... def _(): pass
            >>> list(s.nodes())
            [<Container: root>, <TestCase:  always passes>]


        `repeat` will add multiple test cases with extra parameters.

            >>> s = Suite()
            >>> @s.it('a={} b={}', repeat=[(1, 2), (3, 4)])
            ... def _(a, b): pass
            >>> list(s.nodes())
            [<Container: root>, <TestCase:  a=1 b=2>, <TestCase:  a=3 b=4>]
        '''
        def decorator(test_func):
            if repeat:
                for set_of_args in repeat:
                    self.add_test(message, test_func, set_of_args)
            else:
                self.add_test(message, test_func)
        return decorator