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)
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 )
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)
def _get_flaky_attributes(test): actual_flaky_attributes = dict(((attr, getattr( test, attr, None, )) for attr in FlakyNames())) return actual_flaky_attributes
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, )
def _get_flaky_attributes(test): actual_flaky_attributes = { attr: getattr( test, attr, None, ) for attr in FlakyNames() } return actual_flaky_attributes
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
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()))
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()))
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
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
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, )