コード例 #1
0
    def test_of_many_without_subclasses(self) -> None:
        '''torment.fixtures.of(( FixtureA, )) == []'''
        class FixtureA(object):
            def __init__(self, context) -> None:
                pass

        self.assertEqual(len(fixtures.of((FixtureA, ))), 0)
コード例 #2
0
ファイル: __init__.py プロジェクト: devx/torment
    def test_of_many_without_subclasses(self) -> None:
        '''torment.fixtures.of(( FixtureA, )) == []'''

        class FixtureA(object):
            def __init__(self, context) -> None:
                pass

        self.assertEqual(len(fixtures.of(( FixtureA, ))), 0)
コード例 #3
0
    def test_of_many_with_subclasses(self) -> None:
        '''torment.fixtures.of(( FixtureA, )) == [ fixture_a, ]'''
        class FixtureA(object):
            def __init__(self, context) -> None:
                pass

        class FixtureB(FixtureA):
            pass

        result = fixtures.of((FixtureA, ))

        self.assertEqual(len(result), 1)
        self.assertIsInstance(result[0], FixtureB)
コード例 #4
0
ファイル: __init__.py プロジェクト: devx/torment
    def test_of_many_with_subclasses(self) -> None:
        '''torment.fixtures.of(( FixtureA, )) == [ fixture_a, ]'''

        class FixtureA(object):
            def __init__(self, context) -> None:
                pass

        class FixtureB(FixtureA):
            pass

        result = fixtures.of(( FixtureA, ))

        self.assertEqual(len(result), 1)
        self.assertIsInstance(result[0], FixtureB)
コード例 #5
0
ファイル: __init__.py プロジェクト: alunduil/torment
    def __init__(cls, name, bases, dct) -> None:
        super(MetaContext, cls).__init__(name, bases, dct)

        cls.mocks_mask = set().union(getattr(cls, 'mocks_mask', set()), *[ getattr(base, 'mocks_mask', set()) for base in bases ])
        cls.mocks = set().union(getattr(cls, 'mocks', set()), *[ getattr(base, 'mocks', set()) for base in bases ])

        cls.docker_compose_services = set().union(getattr(cls, 'docker_compose_services', set()), *[ getattr(base, 'docker_compose_services', set()) for base in bases ])

        def generate_case(fixture: fixtures.Fixture) -> Callable[[Any], None]:
            '''Generate a ``unittest.TestCase`` compatible test method.

            Parameters
            ----------

            :``fixture``: the fixture to transform into a ``unittest.TestCase``
                          compatible test method

            Return Value(s)
            ---------------

            An acceptable method that nose will execute as a test case.

            '''

            def case(self) -> None:
                fixture.context = self
                fixture._execute()

            case.__name__ = fixture.name
            case.__doc__ = fixture.description

            if len(cls.mocks_mask):
                case.__doc__ += '—unmocked:' + ','.join(sorted(cls.mocks_mask))

            return case

        if not hasattr(cls, 'fixture_classes'):
            warnings.warn('type object \'{0}\' has no attribute \'fixture_classes\'')
        else:
            for fixture in fixtures.of(cls.fixture_classes, context = cls):
                _ = generate_case(fixture)
                setattr(cls, _.__name__, _)
コード例 #6
0
    def test_of_zero(self) -> None:
        '''torment.fixtures.of(()) == []'''

        self.assertEqual(len(fixtures.of(())), 0)
コード例 #7
0
ファイル: __init__.py プロジェクト: devx/torment
    def test_of_zero(self) -> None:
        '''torment.fixtures.of(()) == []'''

        self.assertEqual(len(fixtures.of(())), 0)
コード例 #8
0
ファイル: __init__.py プロジェクト: racker/torment
class MetaContext(type):
    '''``torment.TestContext`` class creator.

    Generates all testing methods that correspond with the fixtures associated
    with a ``torment.TestContext``.  Also updates the definitions of
    ``mocks_mask`` and ``mocks`` to include the union of all involved classes
    in the creation process (all parent classes and the class being created).

    When creating a ``torment.TestContext`` subclass, ensure you specify this
    class as its metaclass to automatically generate test cases based on its
    ``fixture_classes`` property.

    '''

    module = _module

    def __init__(cls, name, bases, dct) -> None:
        super(MetaContext, cls).__init__(name, bases, dct)

        cls.mocks_mask = set().union(
            getattr(cls, 'mocks_mask', set()),
            *[getattr(base, 'mocks_mask', set()) for base in bases])
        cls.mocks = set().union(
            getattr(cls, 'mocks', set()),
            *[getattr(base, 'mocks', set()) for base in bases])

        cls.docker_compose_services = set().union(
            getattr(cls, 'docker_compose_services', set()), *[
                getattr(base, 'docker_compose_services', set())
                for base in bases
            ])

        def generate_case(fixture: fixtures.Fixture) -> Callable[[Any], None]:
            '''Generate a ``unittest.TestCase`` compatible test method.

            Parameters
            ----------

            :``fixture``: the fixture to transform into a ``unittest.TestCase``
                          compatible test method

            Return Value(s)
            ---------------

            An acceptable method that nose will execute as a test case.

            '''
            def case(self) -> None:
                fixture.context = self
                fixture._execute()

            case.__name__ = fixture.name
            case.__doc__ = fixture.description

            if len(cls.mocks_mask):
                case.__doc__ += '—unmocked:' + ','.join(sorted(cls.mocks_mask))

            return case

        if not hasattr(cls, 'fixture_classes'):
            warnings.warn(
                'type object \'{0}\' has no attribute \'fixture_classes\'')
        else:
            for fixture in fixtures.of(cls.fixture_classes, context=cls):
                _ = generate_case(fixture)
                setattr(cls, _.__name__, _)