diff --git a/tests/test_book.py b/tests/test_book.py new file mode 100644 index 0000000..f34d217 --- /dev/null +++ b/tests/test_book.py @@ -0,0 +1,45 @@ +import pytest +import openpyxl +from app.Excel import book +from app.Parser import parser +import pathlib + + +pairs = [('https://www.antutu.com/en/ranking/rank1.htm', 'Android'), + ('https://www.antutu.com/en/ranking/ios1.htm', 'IOS'), + ('https://www.antutu.com/en/ranking/ai1.htm', 'AI')] + + +@pytest.fixture(name='work_book') +def create_book(): + return openpyxl.Workbook() + + +def test_create_book(): + bk = book.create_book() + assert type(bk) == openpyxl.workbook.workbook.Workbook + + +def test_save_book(work_book, tmp_path): + path = pathlib.Path(tmp_path, 'test.xlsx') + book.save_book(work_book, path) + assert path.exists() + + +@pytest.mark.parametrize('url, platform', pairs) +def test_create_sheet(url, platform, work_book): + data = parser.get_data(parser.parse_text(url), platform) + book.create_sheet(work_book, data) + assert work_book.sheetnames[0] == platform + + +@pytest.mark.parametrize('url, platform', pairs) +def test_main(url, platform, tmp_path): + path = pathlib.Path(tmp_path, 'test_main.xlsx') + data = parser.get_data(parser.parse_text(url), platform) + book.main(data, path) + assert path.exists() + wb = openpyxl.load_workbook(path) + assert wb.sheetnames[0] == platform + sheet = wb.active + assert sheet['A1'].value == platform \ No newline at end of file diff --git a/tests/test_excel.py b/tests/test_excel.py deleted file mode 100644 index 0dfd0ac..0000000 --- a/tests/test_excel.py +++ /dev/null @@ -1,36 +0,0 @@ -import pytest -import openpyxl -from app.Excel import book -from app.Parser import parser -import pathlib - - -url_android = 'https://www.antutu.com/en/ranking/rank1.htm' -url_ios = 'https://www.antutu.com/en/ranking/ios1.htm' -url_ai = 'https://www.antutu.com/en/ranking/ai1.htm' - - -@pytest.fixture(name='work_book') -def create_book(): - return openpyxl.Workbook() - - -def get_an_data(): - return parser.get_phones_data(parser.parse_text(url_android)) - -def get_io_data(): - return parser.get_phones_data(parser.parse_text(url_android)) - -def get_ai_data(): - return parser.get_phones_data(parser.parse_text(url_android)) - - -def test_create_book(): - bk = book.create_book() - assert type(bk) == openpyxl.workbook.workbook.Workbook - - -def test_save_book(work_book, tmp_path): - path = pathlib.Path(tmp_path, 'test.xlsx') - book.save_book(work_book, path) - assert path.exists() diff --git a/tests/test_parser.py b/tests/test_parser.py index f698a83..ddd6b08 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -3,18 +3,42 @@ from app.Parser import parser -@pytest.mark.parametrize('url', [('https://www.antutu.com/en/ranking/rank1.htm'), - ('https://www.antutu.com/en/ranking/ios1.htm'), - ('https://www.antutu.com/en/ranking/ai1.htm')]) +url_list = [('https://www.antutu.com/en/ranking/rank1.htm'), + ('https://www.antutu.com/en/ranking/ios1.htm'), + ('https://www.antutu.com/en/ranking/ai1.htm')] + + +@pytest.mark.parametrize('url', url_list) def test_access_url(url): page = requests.get(url) assert page.status_code == 200 -@pytest.mark.parametrize('url', [('https://www.antutu.com/en/ranking/rank1.htm'), - ('https://www.antutu.com/en/ranking/ios1.htm'), - ('https://www.antutu.com/en/ranking/ai1.htm')]) +@pytest.mark.parametrize('url', url_list) def test_parse_text_data(url): headers = parser.parse_text(url) assert type(headers) == list assert len(headers) != 0 + + +@pytest.mark.parametrize('url', url_list) +def test_get_column_name_list(url): + column_name_list = parser.get_column_name_list(parser.parse_text(url)[1]) + assert type(column_name_list) == list + assert len(column_name_list) != 0 + + +@pytest.mark.parametrize('url', url_list) +def test_get_table_row_list(url): + table_row_list = parser.get_table_row_list(1, parser.parse_text(url)[2]) + assert type(table_row_list) == list + assert len(table_row_list) != 0 + + +@pytest.mark.parametrize('url, platform', [('https://www.antutu.com/en/ranking/rank1.htm', 'Android'), + ('https://www.antutu.com/en/ranking/ios1.htm', 'IOS'), + ('https://www.antutu.com/en/ranking/ai1.htm', 'AI')]) +def test_get_data(url, platform): + table = parser.get_data(parser.parse_text(url), platform) + assert type(table) == list + assert len(table) != 0 \ No newline at end of file diff --git a/tests/test_sheet.py b/tests/test_sheet.py new file mode 100644 index 0000000..8451545 --- /dev/null +++ b/tests/test_sheet.py @@ -0,0 +1,55 @@ +import pytest +import openpyxl +from app.Parser import parser +from app.Excel.Sheets.Styles import styles +from app.Excel.Sheets import sheet + + +pairs = [('https://www.antutu.com/en/ranking/rank1.htm', 'Android'), + ('https://www.antutu.com/en/ranking/ios1.htm', 'IOS'), + ('https://www.antutu.com/en/ranking/ai1.htm', 'AI')] + + +@pytest.fixture(name='work_book') +def create_book(): + return openpyxl.Workbook() + + +@pytest.mark.parametrize('url, platform', pairs) +def test_create_sheet(url, platform, work_book): + data = parser.get_data(parser.parse_text(url), platform) + work_sheet = sheet.create_sheet(work_book, data) + assert work_sheet.title == platform + + +@pytest.mark.parametrize('url, platform', pairs) +def test_set_size(url, platform, work_book): + data = parser.get_data(parser.parse_text(url), platform) + work_sheet = sheet.create_sheet(work_book, data) + sheet.set_size(work_sheet, data) + assert work_sheet.row_dimensions[1].height == 30 + + +@pytest.mark.parametrize('url, platform', pairs) +def test_set_titles(url, platform, work_book): + data = parser.get_data(parser.parse_text(url), platform) + work_sheet = sheet.create_sheet(work_book, data) + sheet.set_titles(work_sheet, data) + assert work_sheet['A1'].value == platform + + +@pytest.mark.parametrize('url, platform', pairs) +def test_set_data(url, platform, work_book): + data = parser.get_data(parser.parse_text(url), platform) + work_sheet = sheet.create_sheet(work_book, data) + sheet.set_titles(work_sheet, data) + sheet.set_data(work_sheet, data) + assert work_sheet['A3'].value == data[2][0] + + +@pytest.mark.parametrize('url, platform', pairs) +def test_set_styles(url, platform, work_book): + data = parser.get_data(parser.parse_text(url), platform) + work_sheet = sheet.create_sheet(work_book, data) + sheet.set_styles(work_sheet, data) + assert work_sheet['A1'].alignment == styles.alignment() \ No newline at end of file