35-pytest-Hooks函数之统计测试结果

本文介绍了如何利用pytest的pytest_terminal_summary钩子函数来统计和打印测试结果,并将其写入文件。示例展示了在conftest.py和test_67.py中如何编写代码,包括统计通过、失败、错误和跳过的测试用例数,以及测试总时间和成功率,并将这些信息保存到result.txt文件中。
摘要由CSDN通过智能技术生成

Hooks函数之统计测试结果


前言

  • 本篇继续学习Hooks函数之pytest_terminal_summary统计测试结果

使用示例

  • 在conftest.py中写入如下代码,用于手机测试结果
# -*- coding: utf-8 -*-
# @Time    : 2022/4/9
# @Author  : 大海

import time
from _pytest import terminal

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    """统计测试结果"""
    print(terminalreporter.stats)
    print("total:", terminalreporter._numcollected)
    print('passed:', len(terminalreporter.stats.get('passed', [])))
    print('failed:', len(terminalreporter.stats.get('failed', [])))
    print('error:', len(terminalreporter.stats.get('error', [])))
    print('skipped:', len(terminalreporter.stats.get('skipped', [])))
    # terminalreporter._sessionstarttime 会话开始时间
    duration = time.time() - terminalreporter._sessionstarttime
    print('total times:', duration, 'seconds')

  • 在test_67.py 文件中,写入如下代码
# -*- coding: utf-8 -*-
# @Time    : 2022/4/9
# @Author  : 大海

import os
import pytest


def test_1():
    print("测试用例1111")
    assert 1 == 1


@pytest.mark.skip("跳过")
def test_2():
    print("测试用例22222")
    assert 1 == 1


def test_3():
    print("测试用例3333")


def test_4():
    print("测试用例44444444")
    assert 1 == 2


if __name__ == '__main__':
    os.system('pytest -s test_67.py')

  • 运行test_67.py 查看运行结果
    在这里插入图片描述

测试结果写入文件

  • 修改conftest.py文件代码,内容如下
# -*- coding: utf-8 -*-
# @Time    : 2022/4/9
# @Author  : 大海

import time
from _pytest import terminal

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    '''收集测试结果'''
    # print(terminalreporter.stats)
    total = terminalreporter._numcollected
    passed= len([i for i in terminalreporter.stats.get('passed', []) if i.when != 'teardown'])
    failed=len([i for i in terminalreporter.stats.get('failed', []) if i.when != 'teardown'])
    error=len([i for i in terminalreporter.stats.get('error', []) if i.when != 'teardown'])
    skipped=len([i for i in terminalreporter.stats.get('skipped', []) if i.when != 'teardown'])
    successful = len(terminalreporter.stats.get('passed', []))/terminalreporter._numcollected*100
    # terminalreporter._sessionstarttime 会话开始时间
    duration = time.time() - terminalreporter._sessionstarttime
    print('total times: %.2f' % duration, 'seconds')

    with open("./result.txt", "w") as fp:
        fp.write("TOTAL=%s" % total+"\n")
        fp.write("PASSED=%s" % passed+"\n")
        fp.write("FAILED=%s" % failed+"\n")
        fp.write("ERROR=%s" % error+"\n")
        fp.write("SKIPPED=%s" % skipped+"\n")
        fp.write("SUCCESSFUL=%.2f%%" % successful+"\n")
        fp.write("TOTAL_TIMES=%.2fs" % duration)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值