引言
本文介绍在 Web 端修改客户端配置后,验证客户端查看配置是否生效的自动化测试实现方案。
一、测试环境
- 代码编辑器使用 PyCharm,编程语言选择 Python。
- Web 自动化测试工具选择 Python 第三方库 Playwright,客户端测试工具选择 Appium。
- 项目架构:Web 端 + App 端。
- 测试用例管理方法:Pytest。
- Python 及第三方库版本:Python 3.11, Playwright 1.57.0, Pytest 8.3.3, Selenium 4.33, appium-python-client 5.1.1。
- Appium Server: v2.18.0。
二、项目结构
1. PyCharm 文件脚本目录
- tests: 新建 Python 软件包用于存放测试文件。用 Pytest 整合测试用例,所以测试文件以
test_开头,例如test_patient_screen.py。 - setting: 用来存放测试中用到的配置信息,如 Web 端登录的用户名密码、要上传的文件、延时时间等。放在
setting下面方便自定义配置后期维护,且 Python 导入时能自动查找。 - pages: 使用 PO 模式进行 Web 端测试时会用到。PO 模式是将本次测试中经常用到的界面操作根据当前页面来封装。例如数据查询页面包含输入关键词、点击搜索、翻页、拉动进度条等操作,将这些操作封装成一个类,下次切换到该界面时直接调用类中的操作函数。
- log: 存放日志。当有多个测试用例时,用日志记录操作步骤和捕获错误是个好办法。工具是 Python 的
logging库。
2. 关键对象与 Fixture
- Browser 规划生成器的生命范围。
@pytest.fixture(scope="session")
def browser() -> Browser:
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, slow_mo=30000)
yield browser
browser.close()
playwright.stop()
- Page
@pytest.fixture(scope="class")
def page(browser: Browser) -> Page:
context = browser.new_context()
page = context.new_page()
yield page
page.close()
context.close()
装饰器说明 page 生成器的生命范围是 class,所以在第一次调用此生成器的测试类中 page 是可以延续的。即第一个测试用例可能需要先进行登录操作,后续的测试函数直接从上一个测试结束时的界面状态开始。

