示例#1
0
def test_extract_posts_link():
    with patch.multiple('site_crawler.crawler',
                        extract_post_links=DEFAULT,
                        extract_sample_category_from_site=DEFAULT) as values:
        extract_post_links_mock = values['extract_post_links']
        extract_sample_category_from_site_mock = values[
            'extract_sample_category_from_site']

        extract_sample_category_from_site_mock.return_value = 'cat1'

        parser = mock_category_parser()

        def extract_post_return_values(url, post_links):
            if url == 'cat1':
                assert post_links == []
                post_links += ['post2', 'post3', 'post5']
                return parser
            elif url == 'page1':
                assert post_links == ['post2', 'post3', 'post5']
                post_links += ['post7', 'post11', 'post13']

        extract_post_links_mock.side_effect = extract_post_return_values

        parser.get_pagination_pages.return_value = ['page1', 'page2', 'page3']

        result = extract_posts_link(5)
        assert 2 == extract_post_links_mock.call_count

    assert result == ['post2', 'post3', 'post5', 'post7', 'post11']
def test_extract_posts_link():
    with patch.multiple('site_crawler.crawler',
                        extract_post_links=DEFAULT,
                        extract_sample_category_from_site=DEFAULT) as values:
        extract_post_links_mock = values['extract_post_links']
        extract_sample_category_from_site_mock = values['extract_sample_category_from_site']

        extract_sample_category_from_site_mock.return_value = 'cat1'

        parser = mock_category_parser()
        def extract_post_return_values(url, post_links):
            if url == 'cat1':
                assert post_links == []
                post_links += ['post2', 'post3', 'post5']
                return parser
            elif url == 'page1':
                assert post_links == ['post2', 'post3', 'post5']
                post_links += ['post7', 'post11', 'post13']

        extract_post_links_mock.side_effect = extract_post_return_values

        parser.get_pagination_pages.return_value = ['page1', 'page2', 'page3']

        result = extract_posts_link(5)
        assert 2 == extract_post_links_mock.call_count

    assert result == ['post2', 'post3', 'post5', 'post7', 'post11']
def test_extract_post_links():
    posts_link = [2, 3]

    with patch.multiple('site_crawler.crawler', category_parser_from_url=DEFAULT, CategoryPageParser=DEFAULT) as values:
        category_parser_from_url_mock = values['category_parser_from_url']
        category_parser_from_url_mock.return_value = parser = mock_category_parser()
        parser.get_post_links.return_value = [5, 7]

        extract_post_links('category url', posts_link)

        category_parser_from_url_mock.assert_called_once_with('category url')
        parser.get_post_links.assert_called_once_with()

    assert posts_link == [2, 3, 5, 7]
示例#4
0
def test_extract_post_links():
    posts_link = [2, 3]

    with patch.multiple('site_crawler.crawler',
                        category_parser_from_url=DEFAULT,
                        CategoryPageParser=DEFAULT) as values:
        category_parser_from_url_mock = values['category_parser_from_url']
        category_parser_from_url_mock.return_value = parser = mock_category_parser(
        )
        parser.get_post_links.return_value = [5, 7]

        extract_post_links('category url', posts_link)

        category_parser_from_url_mock.assert_called_once_with('category url')
        parser.get_post_links.assert_called_once_with()

    assert posts_link == [2, 3, 5, 7]