news 2026/10/3 8:49:02

基于Pytest接口自动化的requests模块项目实战以及接口关联方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Pytest接口自动化的requests模块项目实战以及接口关联方法

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

1、基于pytest单元测试框架的规则

1.1 模块名(即文件名)必须以test_开头或者_test结尾

1.2 类名必须以Test开头且不能有init方法

1.3 用例名(测试方法)必须以test开头

2、项目实战

import pytest as pytest import requests # 此案例测试用例之间无法关联cookie信息 class TestApi: # 类变量也叫全局变量 access_token = "" # 获取鉴权码 def test_get_token(self): url = "https://api.weiixn.com/token" datas = { "grant_type": "client_credential", "appid": "wx32497320974", "secret": "dh2983yr4fh9734." } res = requests.get(url=url, params=datas) result = res.json() TestApi.access_token = result["access_token"] # jsonpath提取实现接口关联 # lis = jsonpath.jsonpath(res.json(), "$.access_token") # print(lis[0]) # re正则表达式提取 # token = re.search('name="hduwqidh" value="(.*?)"', res.text).group(1) # 编辑标签接口 def test_edit_flag(self): url = "https://api.weiixn.com/update?access_token=" + TestApi.access_token headers = {} # json是字典的字符串格式,两者可以相互转换 json = {} # 键值对 data = None res = requests.post(url=url, json=json, headers=headers) # 文件上传 def test_file_upload(self): url = "https://api.weiixn.com/update?access_token=" + TestApi.access_token datas = { # 文件路径也可以写为open("D:\\snipaste") "media": open(r"D:\snipaste", mode="rb") } res = requests.post(url=url, files=datas) if __name__ == '__main__': # 入口 pytest.main('-vs')

3、pytest的main使用

3.1 pytest.main() 运行模式时,main()不添加任何参数,表示运行当前目录下的所有的测试文件

3.2 main()添加参数如下:

  • pytest.main(['-s', '-v', '-q', '-x','-k "print"'])
  • -s 对于代码里print语句会将输出至控制台
  • -v 用于增加测试用例的冗长
  • -q 用于减少测试用例的执行结果的冗长
  • -x 出现一条用例执行失败就退出测试,调试阶段常用
  • -k "print" 运行包含某个字符串的用例,如pytest -k add XX.py 表示运行XX.py中包含add的测试用例等等

3.3 执行测试用例的过滤

执行某个测试类或测试方法用 :: 隔开,常用-vs参数

pytest.main(["-vs","模块.py::类或方法"])

命令行为:pytest 文件名.py::测试类或测试方法

pytest.main(["-vs","模块.py::类::方法"])

命令行为:pytest 文件名.py::测试类::测试方法

如果是在main目录入口执行测试用例文件:

import pytest

if __name__ == '__main__':

pytest.main(["-vs","--html=../../report_hdc/20211011_hdc_02.html","--self-contained-html"])

3.4 如果使用pytest.main()生效,再pycharm中必须设置Tools>Python Integrated Tools>Default test runner=Unittests;如果设置为pytest则是无效的。

3.5 在pytest中,测试函数可能返回多种结果,不只是通过或失败。如下:

PASSED(.):测试通过

FAILED(F):测试失败

SKIPED(s):测试未被执行,指定测试跳过执行

xfail (x):预期测试失败,并且确实失败

XPASS (X):预期测试失败,但实际上运行通过,不符合预期

ERROR (E):测试用例之外的代码触发的异常

3.6 pytest.main(["-m", "run_first"])

使用-m 对用例进行标记,用例需注释@pytest.mark.xxx,将xxx作为参数传入

使用-m "mark1 and mark2"可以同时选中带有这两个标记的所有测试用例。

使用-m "mark1 and not mark2"选中带有与mark1的测试用例,而过滤掉带有mark2的测试用例

使用-m "mark1 or mark2"则选中带有mark1或者mark2的所有测试用例

4、接口关联

4.1 三个层次

4.1.1 通过类变量保存中间变量实现接口关联

4.1.2 通过单独的文件保存中间变量实现接口关联

4.1.3 极限封装成零代码的方式实现接口关联

4.2 两种方式

4.2.1 正则提取实现接口关联

re.search() #通过正则匹配一个值,通过下标[1]取值,没有匹配到返回none

re.findall() #通过正则匹配多个值,返回List,通过下标取值,没有匹配到返回none

4.2.2 jsonpath提取实现接口关联

jsonpath.jsonpath() #返回一个列表,通过下标取值,没有找到返回none

5、总结

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 11:55:23

PyTorch-2.x部署优化:Zsh高亮提升命令行调试效率

PyTorch-2.x部署优化:Zsh高亮提升命令行调试效率 PyTorch-2.x-Universal-Dev-v1.0 是一款为深度学习开发者量身打造的通用开发环境镜像。它基于官方 PyTorch 底包构建,预装了数据处理、可视化和交互式开发所需的常用工具,系统经过精简优化&a…

作者头像 李华
网站建设 2026/9/29 8:50:39

为什么你的可视化总被吐槽?加入回归线让ggplot2散点图瞬间专业

第一章:为什么你的可视化总被吐槽? 你精心制作的图表却频频遭到质疑?问题可能不在于工具,而在于对数据表达本质的理解。许多人在追求视觉炫酷时,忽略了可视化的核心目标:清晰、准确地传递信息。 过度设计掩…

作者头像 李华
网站建设 2026/10/3 3:40:06

图像瑕疵修复新选择:fft npainting lama开源模型实战测评

图像瑕疵修复新选择:fft npainting lama开源模型实战测评 1. 引言:为什么图像修复需要更智能的方案? 你有没有遇到过这样的情况:一张珍贵的照片里有个不想要的路人,或者截图上的水印怎么都去不掉?传统修图…

作者头像 李华
网站建设 2026/9/29 9:02:49

Unity脚本生命周期函数顺序完全指南(含图解+执行优先级设置)

第一章:Unity脚本生命周期函数顺序概述 在Unity中,脚本的执行遵循一套严格的生命周期流程。理解这些函数的调用顺序对于开发稳定、高效的游戏逻辑至关重要。生命周期函数由Unity引擎自动调用,开发者无需手动触发,但必须清楚它们的…

作者头像 李华
网站建设 2026/9/29 9:02:48

救命神器8个一键生成论文工具,研究生高效写作必备!

救命神器8个一键生成论文工具,研究生高效写作必备! AI 工具如何改变研究生的论文写作方式 在当今快节奏的学术环境中,研究生们常常面临时间紧、任务重的挑战。尤其是论文写作阶段,不仅需要大量的文献阅读和数据分析,…

作者头像 李华
网站建设 2026/10/3 5:44:38

为什么你的async方法卡住了?深度剖析Task返回值的3大误区

第一章:async方法卡顿现象的根源解析 在现代异步编程模型中,async 方法被广泛用于提升程序响应性和资源利用率。然而,在实际开发过程中,开发者常遇到 async 方法执行时出现卡顿或阻塞主线程的现象。这种问题并非源于异步机制本身&…

作者头像 李华