pytest测试框架获取修改文件清单

该博客介绍了如何在Linux环境下利用文件的MD5值来监测文件改动。通过对比改动前后的文件MD5字典,可以轻松获取修改过的文件清单。这种方法结合pytest的yaml_util.py模块,实现改动记录的读写。在模拟的测试中,修改README.txt文件后,成功识别出了变化。
摘要由CSDN通过智能技术生成

由于每次更新会有文件改动,需要获取每次修改文件的清单以便后期核对,设计思路如下:

linux系统下每个文件会有唯一的md5值,当文件被修改以后对应的md5值也会被更改,利用这个特性可以提取出改动前后所有文件的md5值并组建成字典形式({文件名:md5值})。然后通过键值进行对比,即可获取所有改动文件的文件名。

pytest恰好有一个全局文件 extract.yaml 文件,可以以字典的形式储存数据,并且pytest框架还提供了现成的读写方法(yaml_util.py),这个文件无脑抄写就行了,一般情况下不用改动

因此,可以在改动前获取所有文件的md5值并存储在Ymal文件中并保存,再改动后再进行一次存储操作并保存,然后对比两个文件的不同值就可以了。

用例函数设计如下:

path可以根据自己的需要更改。这里主要用到的三个方法:

os.listdir(path):获取指定路径下所有的文件名并返回一个列表。

os.path.isfile(file_name):判断当前对象是否为文件。(由于文件夹没有md5值,所以这里需要进行判断,跳过文件夹,只判断文件的md5值)。

subprocess.check_output():这个方法可以自己查询一下,主要作用是用来执行Linux命令并获取返回结果。但是返回结果需要用decode()方法进行解码,转换为字符串格式。decode之后的字符串会自带一个换行符,根据需求决定是否要去除,我这里去除掉了。

 接下来就是改动前和改动后分别执行run.py,注意每次执行前须清空yaml文件。

 将改动前后的文件内容保存,以便后续操作。

 文件内容:

 编写脚本进行对比:

这个脚本就是把两个文件读取并组建字典,然后遍历改变后的字典,判断同名键对应的值是否相同,将不同的键获取输出就得到修改的文件。

​​​​​​​

 运行结果:(在linux环境下修改了README.txt文件,模拟修改)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值