针对小伙伴提出参数化时读取外部文件,在项目根路径运行没问题,但是进入到项目下子文件夹运行用例,就会找不到文件问题做了优化。
关于参数化读取外部文件相关内容参考前面这篇pytest + yaml 框架 -25.参数化数据支持读取外部文件txt/csv/json/yaml
安装以下版本优化上诉问题
pip install pytest-yaml-yoyo==1.2.5
问题描述
项目层级结构如下
-
D:\demo\yoyo_yaml
-
├── cases/
-
│ ├── test_f.yml
-
├── data/
-
│ ├── xx.csv
-
│ ├── yy.csv
test_f.yml 文件内容
-
config:
-
name: 参数化读取文件csv
-
test_p1:
-
print: ${username}
-
fixtures: username, password
-
parameters: ${p('data/xx.csv', False)}
-
test_p2:
-
print: ${username}
-
parameters: ${p('data/yy.csv')}
data 目录下 xx.csv
-
test1中文,123456
-
test2,1234562
data 目录下 yy.csv
-
username,password
-
test1中文,123456
-
test2,1234562
在项目根目录D:\demo\yoyo_yaml
下执行 pytest 命令运行用例是没有问题的。
但是进入到 D:\demo\yoyo_yaml\cases
下执行 pytest 命令运行用例会报文件找不到的问题
-
2023-06-07 23:02:50 [INFO]: parameters 参数化执行用例
-
2023-06-07 23:02:50 [ERROR]: 文件路径不存在: data\xx.csv
-
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
目录运行日志如下:
-
2023-06-07 23:08:07 [INFO]: parameters 参数化执行用例
-
2023-06-07 23:08:07 [INFO]: 读取文件路径: D:\demo\untitled6_demo_test\data\xx.csv
-
2023-06-07 23:08:07 [INFO]: 取值表达式 p('data/xx.csv', False)
如果测试文件和yaml 用例文件都在cases目录,也能用相对路径找到
项目层级结构如下
-
D:\demo\yoyo_yaml
-
├── cases/
-
│ ├── test_f.yml
-
│ ├── aa.csv
-
├── data/
-
│ ├── xx.csv
-
│ ├── yy.csv
cases/test_f.yml
-
config:
-
name: 参数化读取文件csv
-
test_p1:
-
print: ${username}
-
fixtures: username, password
-
parameters: ${p('data/xx.csv', False)}
-
test_p2:
-
print: ${username}
-
parameters: ${p('data/yy.csv')}
-
test_p3:
-
print: ${username}
-
parameters: ${p('aa.csv')}
aa.csv内容
-
username,password
-
test1中文,123456
-
test2,1234562
在项目根目录D:\demo\yoyo_yaml
和 D:\demo\yoyo_yaml\cases
下执行 pytest 命令都能执行成功。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。