我们从Python开源项目中,提取了以下10个代码示例,用于说明如何使用unittest.mock.assert_has_calls()。
def test_assert_has_calls(self): kalls1 = [ call(1, 2), ({'a': 3},), ((3, 4),), call(b=6), ('', (1,), {'b': 6}), ] kalls2 = [call.foo(), call.bar(1)] kalls2.extend(call.spam().baz(a=3).call_list()) kalls2.extend(call.bam(set(), foo={}).fish([1]).call_list()) mocks = [] for mock in Mock(), MagicMock(): mock(1, 2) mock(a=3) mock(3, 4) mock(b=6) mock(1, b=6) mocks.append((mock, kalls1)) mock = Mock() mock.foo() mock.bar(1) mock.spam().baz(a=3) mock.bam(set(), foo={}).fish([1]) mocks.append((mock, kalls2)) for mock, kalls in mocks: for i in range(len(kalls)): for step in 1, 2, 3: these = kalls[i:i+step] mock.assert_has_calls(these) if len(these) > 1: self.assertRaises( AssertionError, mock.assert_has_calls, list(reversed(these)) )
def test_assert_has_calls_with_function_spec(self): def f(a, b, c, d=None): pass mock = Mock(spec=f) mock(1, b=2, c=3) mock(4, 5, c=6, d=7) mock(10, 11, c=12) calls = [ ('', (1, 2, 3), {}), ('', (4, 5, 6), {'d': 7}), ((10, 11, 12), {}), ] mock.assert_has_calls(calls) mock.assert_has_calls(calls, any_order=True) mock.assert_has_calls(calls[1:]) mock.assert_has_calls(calls[1:], any_order=True) mock.assert_has_calls(calls[:-1]) mock.assert_has_calls(calls[:-1], any_order=True) # Reversed order calls = list(reversed(calls)) with self.assertRaises(AssertionError): mock.assert_has_calls(calls) mock.assert_has_calls(calls, any_order=True) with self.assertRaises(AssertionError): mock.assert_has_calls(calls[1:]) mock.assert_has_calls(calls[1:], any_order=True) with self.assertRaises(AssertionError): mock.assert_has_calls(calls[:-1]) mock.assert_has_calls(calls[:-1], any_order=True)
def test_main_with_shortener(): """Test usage with url shortener.""" from katcr import main, get_from_short from unittest.mock import patch, call opts = {'<SEARCH_TERM>': "foo", '--search-engines': ['Katcr'], '--interactive': False, '--open': False, '-d': False, '--shortener': ['bar'], '--disable-shortener': False, '--pages': [1]} with patch('katcr.Katcr') as mock: with patch('katcr.get_from_short') as short_mock: with patch('katcr.docopt', side_effect=(opts,)): main() mock().search.assert_called_with(opts['<SEARCH_TERM>'], 1) short_mock.assert_called_with('bar', None) class Foo: # pylint: disable=too-few-public-methods, missing-docstring text = "foo" with patch('katcr.requests.post', return_value=Foo) as mock: with patch('katcr.docopt', side_effect=(opts,)): result = list(get_from_short( "foo.com", [("1", "2"), ("3", "4")])) assert [result == [('1', '2', 'foo.com/foo'), ('3', '4', 'foo.com/foo')]] mock.assert_has_calls([call('foo.com', data={'magnet': '2'}), call('foo.com', data={'magnet': '4'})])
def test_assert_has_calls_any_order(self): mock = Mock() mock(1, 2) mock(a=3) mock(3, 4) mock(b=6) mock(b=6) kalls = [ call(1, 2), ({'a': 3},), ((3, 4),), ((), {'a': 3}), ('', (1, 2)), ('', {'a': 3}), ('', (1, 2), {}), ('', (), {'a': 3}) ] for kall in kalls: mock.assert_has_calls([kall], any_order=True) for kall in call(1, '2'), call(b=3), call(), 3, None, 'foo': self.assertRaises( AssertionError, mock.assert_has_calls, [kall], any_order=True ) kall_lists = [ [call(1, 2), call(b=6)], [call(3, 4), call(1, 2)], [call(b=6), call(b=6)], ] for kall_list in kall_lists: mock.assert_has_calls(kall_list, any_order=True) kall_lists = [ [call(b=6), call(b=6), call(b=6)], [call(1, 2), call(1, 2)], [call(3, 4), call(1, 2), call(5, 7)], [call(b=6), call(3, 4), call(b=6), call(1, 2), call(b=6)], ] for kall_list in kall_lists: self.assertRaises( AssertionError, mock.assert_has_calls, kall_list, any_order=True )
def test_variable_timeouts(self): nt = { 'https://google.com/timeout/test/2/3/4/5/something': 10, 'https://facebook.com/timeout': 2, '*': 25 } file_contents = """ https://facebook.com/ https://google.com/ https://coala.io/som/thingg/page/123 """.splitlines() def response(status_code, *args, **kwargs): res = requests.Response() res.status_code = status_code return res with unittest.mock.patch( 'tests.general.InvalidLinkBearTest.requests.head', return_value=response(status_code=200)) as mock: self.check_validity(self.uut, file_contents, settings={'network_timeout': nt}) with self.assertLogs(logging.getLogger()) as log: self.check_validity(self.uut, file_contents, settings={'timeout': 20}) self.assertEqual(log.output, ['WARNING:root:The setting `timeout` is ' 'deprecated. Please use `network_timeout` ' 'instead.']) self.check_validity(self.uut, ['https://gitmate.io']) mock.assert_has_calls([ unittest.mock.call('https://facebook.com/', timeout=2, allow_redirects=False), unittest.mock.call('https://google.com/', timeout=10, allow_redirects=False), unittest.mock.call('https://coala.io/som/thingg/page/123', timeout=25, allow_redirects=False), unittest.mock.call('https://facebook.com/', timeout=20, allow_redirects=False), unittest.mock.call('https://google.com/', timeout=20, allow_redirects=False), unittest.mock.call('https://coala.io/som/thingg/page/123', timeout=20, allow_redirects=False), unittest.mock.call('https://gitmate.io', timeout=15, allow_redirects=False)])