class TestExtractorFactory(unittest.TestCase): def setUp(self): self.extractor_factory = ExtractorFactory() @mock.patch.object(ExtractorFactory, 'create_extractor_xpath') @mock.patch.object(ExtractorFactory, 'create_extractor_css') @mock.patch('xcrawler.core.extractor.extractor_factory.Extractor') def test_create_extractor(self, mock_extractor_class, mock_create_extractor_css, mock_create_extractor_xpath): mock_element = mock.create_autospec(Element).return_value mock_extractor_xpath = mock.create_autospec(ExtractorXPath).return_value mock_extractor_css = mock.create_autospec(ExtractorCss).return_value mock_create_extractor_xpath.return_value = mock_extractor_xpath mock_create_extractor_css.return_value = mock_extractor_css self.extractor_factory.create_extractor(mock_element) mock_extractor_class.assert_called_once_with(mock_element, mock_extractor_xpath, mock_extractor_css) @mock.patch('xcrawler.core.extractor.extractor_factory.ExtractorXPath') def test_create_extractor_xpath(self, mock_extractor_xpath_class): mock_element = mock.create_autospec(Element).return_value self.extractor_factory.create_extractor_xpath(mock_element) mock_extractor_xpath_class.assert_called_once_with(mock_element) @mock.patch('xcrawler.core.extractor.extractor_factory.ExtractorCss') def test_create_extractor_css(self, mock_extractor_css_class): mock_element = mock.create_autospec(Element).return_value self.extractor_factory.create_extractor_css(mock_element) mock_extractor_css_class.assert_called_once_with(mock_element)
def __init__(self, url, page_scraper, request_factory=RequestFactory(), extractor_factory=ExtractorFactory(), url_joiner=UrlJoiner(), request_sender=RequestSender(), compatibility_factory=CompatibilityFactory()): self.url = url self.scraper = page_scraper self._content = None self.extractor = None self.request_factory = request_factory self.request = self.request_factory.create_request('GET', self.url) self.extractor_factory = extractor_factory self.url_joiner = url_joiner self.request_sender = request_sender self.string_converter = compatibility_factory.create_compatible_string_converter( )
def setUp(self): self.extractor_factory = ExtractorFactory()