python+pytest+allure利用fix实现接口关联

devtools/2024/11/27 22:27:44/

我们在日常工作中如果有一个登陆接口 在查看别的b接口 我们就要频繁的 进行登陆操作

比如登陆-加入购车

登陆-查看某个模块

登陆-加入购物车 等等

如果每次都要写登陆接口 这样会产生大量冗余的代码 所以我们就可以定一个全局变量 就不需要每次都写 直接调用就可以

举个例子

那我们要如何调用name这个变量呢?总不能每次写个方法都要定义一个变量吧?

所以为了方便,我们可以用global  

但是从接口层面上讲 是不建议这样做的

全局变量:先声明 后赋值 

我们可以用fixture 注意 这里一定要写在coftest文件中

写入方法:@pytest.fixture(scope='session')

这里scope是应用范围session这指的是作用域(fun、class、 modle、session)

然后我们就可以把我们登陆的代码直接就放在里面

末尾我们需要return来返回返回值然后我们再

我们上一步已经设置了全局变量(登陆的token),那接下来的每个接口都需要这个token值

我们回到平常的接口用例中进行传值

这里注意在conftest文件中设置的全局变脸 我们创建了一个方法my_token

然后我们把新的变量名字传给原来的token就好啦~

其实看原来的token传值 我们创建一个一样名字的变量赋值给它就好啦 这样我们就不需要来回改动原来的token值

然后我们就可以生成allure运行就好啦

附:conftest文件中也可以写日志哦~

代码如下

python"># 用例文件import requests
import jsonpath
import alluredef test_login(my_token):token_ret = my_tokenwith allure.step('第二步,加入购物车'):url = 'http://www.gggg.com/index.php?s=/save'params = {"application": "app","application_client_type": "weixin",'token': token_ret}data = {"goods_id": "4g","spec": [{"type": "3","value": "3"},],"stock": 1}ret = requests.post(url=url, params=params, data=data)# print(ret.text)mag_ret = jsonpath.jsonpath(ret.json(), '$.msg')[0]print('当前提取数据为:', mag_ret)assert mag_ret == '加入成功', '失败,返回的的是:{mag_ret}'
python"># 全局变量文件
import allure
import pytest
import requests
import jsonpath@pytest.fixture(scope='session')
def my_token():with allure.step('第一步,登陆操作'):url = "http://www.huhuhu.com/index.php?s=/login"params = {"application": "app","application_client_ty1pe": "weixin"}data = {'accounts': 'nihao','pwd': '1256','type': 'username'}# 发送请求ret = requests.post(url, params=params, data=data)# 获取我们的相应数据.msgmag_ret = jsonpath.jsonpath(ret.json(), '$.msg')[0]print("当前提取的数据为:", mag_ret)# 根据对应的.msg进行断言处理assert mag_ret == "登录成功", f'错误,我们当前返回的值是:{mag_ret}'# 获取tokentoken_ret = jsonpath.jsonpath(ret.json(), '$..token')[0]print("当前提取的数据为:", token_ret)return token_ret
python"># 运行文件
import subprocess
import pytestpy_args = ['-s',  # 禁用所有捕获和输出重定向'-v',  # 显示详细的信息# '--capture=sys',  # 输出调试信息,设置级别,打开实时输出(根据需要启用)'--alluredir=allure-results',  # 执行过程的数据存放在allure-results中# '--clean-alluredir'  # 如果需要清理alluredir,请确保此选项在--alluredir之前(但这不是pytest的标准选项,可能是自定义的)
]print('run pytest with args:', py_args)# 使用pytest.main()函数运行测试
if __name__ == "__main__":pytest.main(py_args)# 生成测试报告try:result = subprocess.run(['allure', 'generate', '-c', '-o', 'allure-report'], check=True)print("Allure report generated successfully.")except subprocess.CalledProcessError as e:print(f"Failed to generate Allure report: {e}")# 尝试合并报告(如果combine_allure是有效的)try:from allure_combine import combine_allure  # 确保在需要时才导入,避免在模块导入时出错combine_allure('./allure-report')except ImportError:print("combine_allure module is not available. Skipping report combining.")except Exception as e:print(f"An error occurred while combining reports: {e}")

好啦 就到这里啦


http://www.ppmy.cn/devtools/137500.html

相关文章

Java后端如何进行文件上传和下载 —— 本地版

简介: 本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。 大体思路 1、文件上传 …

Swagger记录一次生成失败

最近在接入Swagger的时候遇到一个问题,就是Swagger UI可以使用的,但是/v3/docs 这个接口的json返回的base64类型的json,并不是纯json,后来检查之后是因为springboot3里面配置了json压缩。 Beanpublic HttpMessageConverters cusHt…

Java基础夯实——2.7 线程上下文切换

线程上下文切换(Thread Context Switching)是操作系统在多线程环境中,切换CPU从执行一个线程的上下文到另一个线程的上下文的过程。这种切换是实现多线程并发执行的核心机制之一。 1 上下文: 线程的上下文指线程在某一时刻的执行状态,如&am…

【前端学习笔记】AJAX、axios、fetch、跨域

1.介绍 AJAX(Asynchronous JavaScript and XML)异步的JS和XML。通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。 X…

计算机操作系统——进程控制(Linux)

进程控制 进程创建fork()函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出(Exit)由于信号终止非…

docker创建vue镜像

1.确保你已经安装了 Node.js 和 Vue CLI。 2.创建一个 Vue.js 项目(如果你还没有一个) vue create my-vue-app 3.进入目录 cd my-vue-app 4.构建vue.js npm run build 5.创建一个 Dockerfile 来构建 Vue 应用的 Docker 镜像: # 基于 Node 官方…

多商户系统推动旅游业数字化升级与创新,定制化旅游促进市场多元化发展

国内旅游市场一直保持着强劲的发展势头。随着国内居民收入水平的提高、消费观念的转变以及交通条件的极大改善,国内旅游人数持续攀升。无论是传统的热门旅游城市,如北京、上海、杭州等,还是新兴的旅游目的地,如成都、重庆、西安等…

Vue2+el-table实现表格行上下滚动,表格单元格内容溢出左右滚动 TextScroll、TableWrapper

Vue2el-table实现表格行上下滚动&#xff0c;表格单元格内容溢出左右滚动 TextScroll、TableWrapper TextScroll 文本左右滚动容器组件 <template><div ref"wrapper" class"scroll-wrapper" mouseenter"mouseenter" mouseleave"…