Ejemplo n.º 1
0
 def _expect_test_flaky(self, is_test_method, max_runs, min_passes):
     self._expect_call_test_address()
     if is_test_method:
         mock_test_method = getattr(self._mock_test,
                                    self._mock_test_method_name)
         for flaky_attr in FlakyNames():
             setattr(self._mock_test, flaky_attr, None)
             setattr(mock_test_method, flaky_attr, None)
         flaky(max_runs, min_passes)(mock_test_method)
     else:
         flaky(max_runs, min_passes)(self._mock_test)
         mock_test_method = getattr(self._mock_test,
                                    self._mock_test_method_name)
         for flaky_attr in FlakyNames():
             setattr(mock_test_method, flaky_attr, None)
Ejemplo n.º 2
0
    def test_flaky_adds_flaky_attributes_to_test_method(self):
        min_passes = 4
        max_runs = 7

        @flaky(max_runs, min_passes)
        def test_something():
            pass

        flaky_attribute = {
            attr: getattr(
                test_something,
                attr,
                None
            ) for attr in FlakyNames()
        }

        self.assertIsNotNone(flaky_attribute)
        self.assertDictContainsSubset(
            {
                FlakyNames.MIN_PASSES: min_passes,
                FlakyNames.MAX_RUNS: max_runs,
                FlakyNames.CURRENT_PASSES: 0,
                FlakyNames.CURRENT_RUNS: 0,
                FlakyNames.CURRENT_ERRORS: None
            },
            flaky_attribute
        )
Ejemplo n.º 3
0
 def _expect_test_not_flaky(self):
     self._expect_call_test_address()
     for test_object in (self._mock_test,
                         getattr(self._mock_test,
                                 self._mock_test_method_name)):
         for flaky_attr in FlakyNames():
             setattr(test_object, flaky_attr, None)
Ejemplo n.º 4
0
 def _get_flaky_attributes(test):
     actual_flaky_attributes = dict(((attr, getattr(
         test,
         attr,
         None,
     )) for attr in FlakyNames()))
     return actual_flaky_attributes
Ejemplo n.º 5
0
    def setUp(self):
        super(TestFlakyNosePlugin, self).setUp()

        self._mock_test_result = MagicMock()
        self._mock_stream = None
        self._flaky_plugin = flaky_nose_plugin.FlakyPlugin()
        self._mock_nose_result = Mock(flaky_nose_plugin.TextTestResult)
        self._flaky_plugin.prepareTestResult(self._mock_nose_result)
        self._mock_test = MagicMock(name='flaky_plugin_test')
        self._mock_test_case = MagicMock(name='flaky_plugin_test_case',
                                         spec=TestCase)
        self._mock_test_case.address = MagicMock()
        self._mock_test_case.test = self._mock_test
        self._mock_test_module_name = 'test_module'
        self._mock_test_class_name = 'TestClass'
        self._mock_test_method_name = 'test_method'
        self._mock_test_names = '{0}:{1}.{2}'.format(
            self._mock_test_module_name, self._mock_test_class_name,
            self._mock_test_method_name)
        self._mock_exception = Exception('Error in {0}'.format(
            self._mock_test_method_name))
        self._mock_stack_trace = ''
        self._mock_exception_type = Exception
        self._mock_error = (self._mock_exception_type, self._mock_exception,
                            self._mock_stack_trace)
        self._mock_test_method = MagicMock(
            name=self._mock_test_method_name,
            spec=['__call__'] + list(FlakyNames().items()),
        )
        setattr(
            self._mock_test,
            self._mock_test_method_name,
            self._mock_test_method,
        )
Ejemplo n.º 6
0
 def _get_flaky_attributes(test):
     actual_flaky_attributes = {
         attr: getattr(
             test,
             attr,
             None,
         ) for attr in FlakyNames()
     }
     return actual_flaky_attributes
Ejemplo n.º 7
0
 def _get_flaky_attributes(self):
     actual_flaky_attributes = dict(
         ((attr, getattr(
             self._mock_test_case,
             attr,
             None,
         )) for attr in FlakyNames()))
     for key, value in actual_flaky_attributes.items():
         if isinstance(value, list):
             actual_flaky_attributes[key] = tuple(value)
     return actual_flaky_attributes
Ejemplo n.º 8
0
 def _get_flaky_attributes(cls, test_callable):
     """
     Get all the flaky related attributes from the test callable.
     :param test_callable:
         The test callable from which to get the flaky related attributes.
     :type test_callable:
         `callable`
     :return:
     :rtype:
         `dict` of `unicode` to varies
     """
     return dict(((attr, cls._get_flaky_attribute(
         test_callable,
         attr,
     )) for attr in FlakyNames()))
Ejemplo n.º 9
0
    def _get_flaky_attributes(cls, test_item):
        """
        Get all the flaky related attributes from the test.

        :param test_item:
            The test callable from which to get the flaky related attributes.
        :type test_item:
            `callable` or :class:`nose.case.Test` or :class:`Function`
        :return:
        :rtype:
            `dict` of `unicode` to varies
        """
        return dict(((attr, cls._get_flaky_attribute(
            test_item,
            attr,
        )) for attr in FlakyNames()))
Ejemplo n.º 10
0
 def _get_flaky_attributes(is_test_method, test, test_method_name=None):
     if is_test_method:
         test_owner = test.instance
     else:
         test_owner = test.module
     test_object = getattr(
         test_owner,
         test_method_name,
     )
     actual_flaky_attributes = dict(
         ((attr, getattr(
             test_object,
             attr,
             None,
         )) for attr in FlakyNames()))
     return actual_flaky_attributes
Ejemplo n.º 11
0
 def _get_flaky_attributes(self, is_test_method):
     if is_test_method:
         mock_test_method = getattr(
             self._mock_test,
             self._mock_test_method_name
         )
         test_object = mock_test_method
     else:
         test_object = self._mock_test
     actual_flaky_attributes = dict((
         (
             attr,
             getattr(
                 test_object,
                 attr
             )
         ) for attr in FlakyNames()
     ))
     for key, value in actual_flaky_attributes.items():
         if isinstance(value, list):
             actual_flaky_attributes[key] = tuple(value)
     return actual_flaky_attributes
Ejemplo n.º 12
0
    def setUp(self):
        super(TestFlakyPlugin, self).setUp()

        test_base_mod = 'flaky._flaky_plugin'
        self._mock_test_result = MagicMock()
        self._mock_stream = MagicMock(spec=StringIO)
        with patch.object(flaky_nose_plugin, 'TextTestResult') as flaky_result:
            with patch(test_base_mod + '.StringIO') as string_io:
                string_io.return_value = self._mock_stream
                flaky_result.return_value = self._mock_test_result
                self._flaky_plugin = flaky_nose_plugin.FlakyPlugin()
        self._mock_nose_result = Mock(flaky_nose_plugin.TextTestResult)
        self._flaky_plugin.prepareTestResult(self._mock_nose_result)
        self._mock_test = MagicMock(name='flaky_plugin_test')
        self._mock_test_case = MagicMock(name='flaky_plugin_test_case',
                                         spec=TestCase)
        self._mock_test_case.address = MagicMock()
        self._mock_test_case.test = self._mock_test
        self._mock_test_module_name = 'test_module'
        self._mock_test_class_name = 'TestClass'
        self._mock_test_method_name = 'test_method'
        self._mock_test_names = '{0}:{1}.{2}'.format(
            self._mock_test_module_name, self._mock_test_class_name,
            self._mock_test_method_name)
        self._mock_exception = Exception('Error in {0}'.format(
            self._mock_test_method_name))
        self._mock_stack_trace = ''
        self._mock_exception_type = Exception
        self._mock_error = (self._mock_exception_type, self._mock_exception,
                            self._mock_stack_trace)
        self._mock_test_method = MagicMock(
            name=self._mock_test_method_name,
            spec=['__call__'] + list(FlakyNames().items()),
        )
        setattr(
            self._mock_test,
            self._mock_test_method_name,
            self._mock_test_method,
        )