pytest + yaml 框架 - 参数化读取文件路径优化

针对小伙伴提出参数化时读取外部文件,在项目根路径运行没问题,但是进入到项目下子文件夹运行用例,就会找不到文件问题做了优化。
关于参数化读取外部文件相关内容参考前面这篇pytest + yaml 框架 -25.参数化数据支持读取外部文件txt/csv/json/yaml

安装以下版本优化上诉问题

pip install pytest-yaml-yoyo==1.2.5

问题描述

项目层级结构如下

  1. D:\demo\yoyo_yaml

  2. ├── cases/

  3. │ ├── test_f.yml

  4. ├── data/

  5. │ ├── xx.csv

  6. │ ├── yy.csv

test_f.yml 文件内容

  1. config:

  2. name: 参数化读取文件csv

  3. test_p1:

  4. print: ${username}

  5. fixtures: username, password

  6. parameters: ${p('data/xx.csv', False)}

  7. test_p2:

  8. print: ${username}

  9. parameters: ${p('data/yy.csv')}

data 目录下 xx.csv

  1. test1中文,123456

  2. test2,1234562

data 目录下 yy.csv

  1. username,password

  2. test1中文,123456

  3. test2,1234562

在项目根目录D:\demo\yoyo_yaml 下执行 pytest 命令运行用例是没有问题的。
但是进入到 D:\demo\yoyo_yaml\cases 下执行 pytest 命令运行用例会报文件找不到的问题

  1. 2023-06-07 23:02:50 [INFO]: parameters 参数化执行用例

  2. 2023-06-07 23:02:50 [ERROR]: 文件路径不存在: data\xx.csv

  3. 2023-06-07 23:02:50 [INFO]: 取值表达式 p('data/xx.csv', False)

原因是以当前运行的目录为节点,根据相对路径是拼接文件路径, D:\demo\yoyo_yaml\cases 拼接 ‘data/xx.csv’ 所以会找不到文件路径。

路径查找优化

新版本对文件路径做了优化:
1.先根据当前运行的文件目录为节点,拼接文件路径,如果路径不存在看下一条2
2.以项目根路径为节点,拼接文件路径

总体来说就是双保险,如果第一种找不到,就按第二种,两种都找不到就报错:文件路径不存在

新版本D:\demo\yoyo_yaml\cases目录运行日志如下:

  1. 2023-06-07 23:08:07 [INFO]: parameters 参数化执行用例

  2. 2023-06-07 23:08:07 [INFO]: 读取文件路径: D:\demo\untitled6_demo_test\data\xx.csv

  3. 2023-06-07 23:08:07 [INFO]: 取值表达式 p('data/xx.csv', False)

如果测试文件和yaml 用例文件都在cases目录,也能用相对路径找到
项目层级结构如下

  1. D:\demo\yoyo_yaml

  2. ├── cases/

  3. │ ├── test_f.yml

  4. │ ├── aa.csv

  5. ├── data/

  6. │ ├── xx.csv

  7. │ ├── yy.csv

cases/test_f.yml

  1. config:

  2. name: 参数化读取文件csv

  3. test_p1:

  4. print: ${username}

  5. fixtures: username, password

  6. parameters: ${p('data/xx.csv', False)}

  7. test_p2:

  8. print: ${username}

  9. parameters: ${p('data/yy.csv')}

  10. test_p3:

  11. print: ${username}

  12. parameters: ${p('aa.csv')}

aa.csv内容

  1. username,password

  2. test1中文,123456

  3. test2,1234562

在项目根目录D:\demo\yoyo_yaml 和 D:\demo\yoyo_yaml\cases 下执行 pytest 命令都能执行成功。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681981.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「C++ STL篇 1-0」string类的使用

目录 〇、概念 一、string类的构造函数 二、赋值运算符重载 三、有关容量的操作 四、string对象的访问 五、遍历string对象的字符数组 六、string对象的修改 七、string对象的常用操作 八、字符串和数字间的转换 拓展】 练习】 源代码】 〇、概念 1. string类是什么&#xff1…

IP地址证书的详细申请步骤

IP地址证书申请的条件有两个,一个是此IP必须是公网IP,另一个是IP的80和443端口必须允许短暂开放。满足这两个条件才能为其部署SSL证书。 IP地址ssl证书申请网址链接https://www.joyssl.com/certificate/select/ip_certificate.html?nid16 1 访问提供IP…

Hadoop3:HDFS的Shell操作(常用命令汇总)

一、简介 什么是HDFS的Shell操作? 很简单,就是在Linux的终端,通过命令来操作HDFS。 如果,你们学习过git、docker、k8s,应该会发现,这些命令的特点和shell命令非常相似 二、常用命令 1、准备工作相关命令…

哈迪斯2发售时间 哈迪斯游戏攻略 苹果电脑怎么玩《哈迪斯2》

这两年肉鸽游戏大爆发,只要不是美女抽卡养成那基本上就是肉鸽了,但是真正让玩家口服心服的肉鸽游戏不多,《哈迪斯》绝对算是其中一款。 近日让玩家期待已久的肉鸽大作,晶体管工作室制作的《哈迪斯》正统续作《哈迪斯2》终于开卖了…

关于模型参数融合的思考

模型参数融合通常指的是在训练过程中或训练完成后将不同模型的参数以某种方式结合起来,以期望得到更好的性能。这种融合可以在不同的层面上进行,例如在神经网络的不同层之间,或者是在完全不同的模型之间。模型参数融合的目的是结合不同模型的…

代码随想录第四十三天|最后一块石头的重量 II 、目标和

题目链接:. - 力扣(LeetCode) 代码如下: 题目链接:. - 力扣(LeetCode) 代码如下:

ABAP 删除销售订单增强 MV45AFZB

1.业务背景 SAP的订单删除,是直接从数据库里面物理删除,这个设计有点恶心,我要查询这个单,都没有办法查询了。业务上要求,如何限制VA02上对销售订单的删除。 2.增强点:MV45AFZB SE38进入到MV45AFZB&#x…

小红书流量机制解析

小红书流量机制解析 前言 大家好,我自2020年5月起,开始专注于小红书平台,帮助品牌商家在小红书上经营。在这段时间里,我深入研究了小红书的流量机制,并结合自己的实践经验,为大家带来了这份全网最硬核的小…

springboot+vue实现登录注册,短信注册以及微信扫描登录

说明:微信扫描登录需要微信注册--要钱,感谢尚硅谷提供的免费接口;短信注册需要阿里云的注册很麻烦并且短信费,没有接口,所以不打算实现,不过能做出效果。 目录 一、建立数据库 二、后端idea实现接口 1.…

【MySQL数据库开发设计规范】之基础规范

欢迎点开这篇文章,自我介绍一下哈,本人笔名姑苏老陈,是一个JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中,该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章,定期更新,欢迎关…

【图书推荐】《图神经网络基础、模型与应用实战》

本书目的 详解PyTorch 图神经网络基础理论、模型与十多个应用案例,带领读者掌握图神经网络在自然语言处理、计算机视觉、推荐系统、社交网络4个领域的应用开发方法,丰富读者利用深度学习算法解决实际问题的能力。 本书案例 图卷积网络实现图注意力网络…

马蹄集oj赛(双周赛第二十六次)

目录 斐波那契数列的组合 三国杀 数列分段 小码哥的跳棋游戏新编 能量供应 小码哥爱数字 最小串 小船过河 摘果子 泼墨淋漓 很重的枪 小码哥的布阵指挥 斐波那契数列的组合 #include<bits/stdc.h> using namespace std;// 斐波那契数列 1 1 2 3 5 8 13 21 34…