pytest中skip用例影响测试报告的结果

发布时间 2023-08-04 17:08:43作者: 汪晓康

前言

最近使用pytest写用例,其中有一部分用例需要skip掉,但是输出的测试报告通过率计算了skip的部分,所以通过率达不到100%。这个不符合我的需求。
比如100条case,其中20条skip,即使另外80条都pass,测试报告的通过率只有80%。
我查了很多资料,最终得到的结论是pytest没有这个功能。但是想实现这个功能非常简单。
因为测试报告是根据temp文件生成的,我们只需要移除skip的result.json即可

解决思路

image
这个是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)

最后

如果解决了你们的问题,来给我留个言谢谢我呀~