从零搭建功能测试自动化:Selenium、Python、PyTest实践问询
问题解答
1. 完全可以用pytest实现全自动化测试
你已经能用Selenium完成表单填写和流程跳转,结合pytest刚好能补全测试用例管理、前置/后置操作复用、结果校验、批量执行这些核心能力,是当前最适合你的方案。
落地步骤参考:
- 用pytest结构化测试用例:把每个手动测试用例转换成一个pytest函数,函数里包含「流程执行(你已实现的Selenium代码)+ 结果校验」两部分
- 用fixture复用重复操作:把登录、浏览器初始化、环境准备这类所有用例都需要的前置操作,封装成pytest的fixture,避免重复代码
- 拆解预期结果为可校验的点:对方给的预期结果(比如“提交后状态为待审核”),要转换成Selenium能定位并校验的具体元素:比如定位状态文本元素,用
assert校验文本是否匹配;或者校验页面跳转后的URL是否正确;如果涉及数据存储,能通过前端展示的就校验前端,不能的话再跟对方协调获取接口或数据库查询权限
2. 不需要刻意索要技术性测试用例
你可以自己通过手动执行测试用例,梳理每个步骤对应的可自动化校验点。比如对方给的用例写“提交申请后显示成功提示”,你手动跑一遍,记录提示框的元素定位方式(ID、XPath等),然后在自动化代码里用assert校验该元素是否可见、文本是否正确。
如果遇到某些预期结果无法通过前端校验的情况(比如后台数据状态),再针对性地跟对方沟通,索要必要的校验手段(比如查询接口、数据库只读权限),而不是直接要技术性用例。
3. 录制流程后人工校验视频的局限性
这种方式是可行的,但只适合少量核心流程的验证,完全不适合全量测试:
- 效率极低:人工看视频耗时比手动测试还久
- 容易漏检:人眼很难注意到所有细节
- 无法批量执行:没法快速回归测试
更优的替代方案(除pytest+Selenium外):
- 数据驱动测试:用
pytest.mark.parametrize批量测试不同的表单输入数据,覆盖更多场景 - 引入测试报告:用
pytest-html生成可视化HTML报告,方便快速定位失败用例的问题 - 图像识别辅助:如果页面元素定位经常变化,可以用PyAutoGUI结合图像识别做元素定位,但维护成本较高,仅作为补充
示例代码(pytest+Selenium)
import pytest from selenium import webdriver from selenium.webdriver.common.by import By # 全局前置/后置:初始化浏览器+登录 @pytest.fixture(scope="module") def driver(): driver = webdriver.Chrome() driver.maximize_window() # 登录操作 driver.get("你的应用登录URL") driver.find_element(By.ID, "username").send_keys("test_user") driver.find_element(By.ID, "password").send_keys("test_pwd") driver.find_element(By.ID, "login-btn").click() yield driver driver.quit() # 测试用例:提交申请流程 def test_submit_application(driver): # 跳转到申请页面 driver.get("申请页面URL") # 填写表单(你已实现的代码) driver.find_element(By.ID, "applicant-name").send_keys("张三") driver.find_element(By.ID, "applicant-phone").send_keys("13800138000") # 提交表单 driver.find_element(By.ID, "submit-btn").click() # 校验预期结果 assert driver.current_url == "提交成功后的页面URL" status_text = driver.find_element(By.CLASS_NAME, "audit-status").text assert status_text == "待审核"
内容的提问来源于stack exchange,提问作者michaelbane
相关产品推荐
相关产品推荐

