Example #1
0
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)
Example #2
0
 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(
     )
Example #3
0
 def setUp(self):
     self.extractor_factory = ExtractorFactory()