pytest中skip用例影响测试报告的结果
前言
最近使用pytest写用例,其中有一部分用例需要skip掉,但是输出的测试报告通过率计算了skip的部分,所以通过率达不到100%。这个不符合我的需求。
比如100条case,其中20条skip,即使另外80条都pass,测试报告的通过率只有80%。
我查了很多资料,最终得到的结论是pytest没有这个功能。但是想实现这个功能非常简单。
因为测试报告是根据temp文件生成的,我们只需要移除skip的result.json即可
解决思路
这个是pytest生成的temp目录中的文件,其中result.json对应着每一条用例。
打开其中一个文件可以看到内容如下
{
"name": "test_1",
"status": "broken"
}
我删掉了无关的内容,只保留name和status字段。
我们只需要写一个方法,读取temp目录,然后删掉XXXXXX-result.json中status为skipped的文件即可。
这样再生成的测试报告,通过率就不包含skip的用例。
参考代码
因为每个人的项目不一样,所以我只给一段参考的代码,你们可以根据实际情况修改。
import json
import os
def remove_skip_file(temp_path):
files = os.listdir(temp_path)
for file_name in files:
if "json" in file_name:
file_path = os.path.join(temp_path, file_name)
with open(file_path, 'r', encoding="utf8") as f:
file_json = json.load(f)
try:
if file_json.get("status", "") == "skipped":
os.remove(file_path)
except Exception as e:
print(file_path)
print(e)
最后
如果解决了你们的问题,来给我留个言谢谢我呀~