import pytest from pathlib import Path from DrissionPage import ChromiumPage from mylib.drission_page import load_chrome_from_ini from mylib.search_manager import SearchManager # 使用 fixture 来初始化浏览器和 SearchManager @pytest.fixture(scope="module") def page(): return load_chrome_from_ini() @pytest.fixture(scope="module") def search_manager(page): return SearchManager(page) # 参数化测试用例 @pytest.mark.parametrize("file_name, expected_result", [ ("只有一页.html", True), ("最后一页.html", True), ("查询不到内容 (2).html", True), ("查询不到内容.html", True), ("正常的搜索结果.html", False), ("流量异常.html", pytest.raises(ValueError)), ]) def test_check_last_page(search_manager, file_name, expected_result): test_dir = Path(r'K:\code\upwork\zhang_crawl_bio\output\debug') file_path = test_dir / file_name print(f"Testing file: {file_name}") # 打印当前测试的文件名 if isinstance(expected_result, type(pytest.raises(ValueError))): print(f"Expecting ValueError for file: {file_name}") # 打印预期会抛出异常的文件 with expected_result: search_manager.page.get(file_path) search_manager.check_last_page() else: search_manager.page.get(file_path) result = search_manager.check_last_page() print(f"Result for {file_name}: {result}") # 打印实际的测试结果 assert result == expected_result, f"Expected {expected_result}, but got {result} for {file_name}"