Python自动化测试实战教程_pytest与接口UI测试整合


pytest做接口和UI自动化测试的核心是分层设计、统一断言、驱动复用与环境隔离;需按职责划分目录结构,封装ApiClient和PageObject,标准化断言与报告策略。

用 pytest 做接口和 UI 自动化测试,核心不是堆功能,而是理清分层、统一断言、复用驱动、隔离环境。下面从实际落地角度拆解关键环节。

pytest 结构要支持多类型测试混跑

别把接口、UI、数据准备全塞进 test_*.py 里。按职责分目录:

  • tests/api/:纯 requests + pytest.mark.api,用 pytest --markers 筛选运行
  • tests/ui/:PageObject 模式 + WebDriver fixture,加 @pytest.mark.ui 标记
  • conftest.py:全局 fixture(如 session、driver、clean_db),按 scope 控制生命周期
  • configs/:env.yaml 存 host、timeout、headless 开关,pytest_addoption 读取命令行参数切换环境

接口测试:用 requests + pytest 参数化 + 断言标准化

避免每个 test 写重复的 headers、token 刷新、状态码判断。封装一个 ApiClient:

  • 继承 requests.Session,自动带 auth token(从 fixture 获取)
  • 提供 .get_json()/.post_json() 方法,统一处理 200 响应体解析和非 200 抛异常
  • 用 pytest.mark.parametrize 跑用例表(路径、参数、期望 status_code、json schema)
  • 断言不写 if assert r.status_code == 200,改用 assert r.status_code == expected_status

UI 测试:PageObject + 显式等待 + 截图兜底

Page 类只管元素定位和操作方法,不写断言和业务逻辑:

  • 每个页面对应一个类(LoginPage、DashboardPage),__init__ 接收 driver,用 WebDriverWait 等待关键元素
  • 操作方法返回 self(链式调用)或下一个 Page 实例(如 login().goto_profile())
  • 用 pytest_runtest_makereport hook,在用例失败时自动截图,保存为 testname_timestamp.png
  • 敏感操作(如提交订单)前加 time.sleep(0.5) 或 driver.execute_script("arguments[0].scrollIntoView();", el)

统一报告与执行策略

pytest-html 生成报告只是基础,重点是让结果可读、可追溯:

  • 用 --junitxml=report.xml 配合 Jenkins 解析通过率;加 --tb=short 减少冗余 traceback
  • 在 conftest.py 里用 pytest_runtest_logreport 记录每个用例耗时、标签、错误摘要到 CSV
  • CI 中用 pytest -m "api and not slow" 运行高频接口;用 pytest -m ui --headless 跑 UI 回归
  • 失败用例自动重试(pytest-rerunfailures),但仅限 UI,接口失败通常代表真实问题
接口和 UI 不是并列关系,而是验证链条:接口保证服务正确性,UI 验证端到端流程和用户视角。pytest 的价值在于用同一套机制管理两者生命周期,而不是强行合并测试逻辑。


# python  # html  # js  # json  # go  # session  # csv  # ai  # jenkins  # 状态码  # webdriver 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win10如何更改开机密码_Windows10登录选项更改密码  Win10如何关闭安全中心所有通知 Win10禁用Windows Defender提醒【设置】  Windows 11无法安全删除U盘提示设备正在使用中怎么办_Windows 11找出占用设备进程  Go语言中slice追加操作的底层共享机制详解  Win10怎样设置多显示器_Win10多显示器扩展设置【攻略】  C++ STL算法库怎么用?C++常用算法函数(sort, find)教程【效率提升】  Windows10电脑怎么设置文件权限_Win10安全选项卡所有者修改  如何在Golang中理解指针比较_Golang地址比较与相等判断  c++怎么实现大文件的分块读写_c++ 文件指针seekp与seekg偏移控制【方法】  Python代码测试策略_质量保障解析【教程】  VSC怎样在VSC中调试PHPAPI_接口调试技巧【详解】  Mac怎么开启“任何来源”_Mac安装未签名应用的设置方法【解决】  如何在Golang中实现RPC异步返回_Golang RPC异步处理与回调方法  php串口通信波特率怎么选_根据硬件手册设置正确波特率【方法】  php会话怎么开启_session_start函数的作用与使用时机【方法】  如何在 Go 中正确初始化结构体中的 map 字段  Mac版Final Cut Pro入门_Mac视频剪辑基础操作【教程】  Windows系统时间服务错误_W32Time服务修复与同步教学  怎么将XML数据可视化 D3.js加载XML  php删除数据怎么加限制_带where条件删除避免全删【指南】  Win10电脑怎么设置休眠快捷键_Windows10电源按钮功能定义  php订单日志怎么按金额排序_php按订单金额排序日志方法【方法】  Windows7如何安装系统镜像_Windows7系统安装教程【步骤】  c# 服务器GC和工作站GC的区别和设置  如何诊断并终止卡死的 multiprocessing 子进程  如何使用Golang实现RPC序列化与反序列化_Golang RPC数据编码与解码方法  Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】  Win11怎么设置开机问候语_自定义Win11锁屏提示信息【技巧】  Win11怎么关闭开机声音_Win11系统启动提示音静音【教程】  Win11怎么关闭自动修复_跳过Win11开机自动修复循环【技巧】  Windows如何使用BitLocker To Go加密U盘?(移动驱动器加密)  PHP接收参数长度超限怎么办_修改postmaxsize设置教程【解答】  Win11此电脑不在桌面上_Windows 11桌面图标设置找回【步骤】  VSC怎样在Linux运行PHP_Ubuntu系统配置步骤【操作】  php查询数据怎么导出csv_查询结果转csv文件保存【操作】  如何用::实现单例模式_php静态方法与作用域操作符应用【技巧】  Python生成器表达式内存优化_惰性计算说明【指导】  如何解决Windows字体显示模糊的问题?(ClearType设置)  C++如何使用std::transform批量处理容器元素?(代码示例)  Windows10如何彻底关闭自动更新_Win10服务与组策略双重禁用  php订单日志怎么记录物流_php记录订单物流变更日志指南【指南】  如何在Golang中使用内置函数_Golanglen append make等使用技巧  Win11怎么查看显卡显存_查询Win11显卡详细参数方法【步骤】  Win11屏幕亮度突然变暗怎么解决_自动变暗问题处理  Windows10如何更改开机密码_Win10登录选项更改密码教程  Win10如何备份注册表_Win10注册表备份步骤【攻略】  Win11怎么更改文件夹图标_自定义Win11文件夹外观样式【详解】  如何在Golang中编写异步函数测试_Golang异步操作测试策略  Win10路由器怎么隐藏ssid Win10隐藏wifi名称设置【指南】  php下载安装后memory_limit怎么设置_内存限制调整【技巧】 

 2026-01-04

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.