class TestWhich(unittest.TestCase): def setUp(self): self.p1 = mock.Mock(spec=DirectorySearcher) self.p2 = mock.Mock(spec=DirectorySearcher) self.p1.search.return_value = self.p2.search.return_value = None self.which = Which([self.p1, self.p2]) def test_search(self): executable = self.p1.search.return_value = mock.Mock() self.assertEqual(self.which.search('executable'), executable) self.p1.search.assert_called_once_with('executable') assert self.p2.call_count == 0 def test_search_cache(self): executable = self.p1.search.return_value = mock.Mock() self.assertEqual(self.which.search('executable'), executable) self.assertEqual(self.which.search('executable'), executable) self.p1.search.assert_called_once_with('executable') assert self.p2.call_count == 0 def test_search_precendence(self): e1 = self.p1.search.return_value = mock.Mock() self.p2.search.return_value = mock.Mock() self.assertEqual(self.which.search('executable'), e1) def test_attribute(self): executable = self.p1.search.return_value = mock.Mock() self.assertEqual(self.which.executable, executable) def test_search_not_exits(self): with self.assertRaises(NotInstalled): self.which.search('not-found')
def setUp(self): self.p1 = mock.Mock(spec=DirectorySearcher) self.p2 = mock.Mock(spec=DirectorySearcher) self.p1.search.return_value = self.p2.search.return_value = None self.which = Which([self.p1, self.p2])