一篇解决,Unittest接口测试生成报告和日志

news2024/12/23 6:38:12

HTML报告

  1. 直接把HTMLTestRunner.py放入工程目录即可
  2. 报告脚本封装
#HTNL格式报告
    now = datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S')
    htmlreport = reportpath + "/" + now + r"result.html"
    print("测试报告生成地址:%s"% htmlreport)
    fp = open(htmlreport, "wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 
    									   verbosity=2, 
    									   title="xxxx接口自动化测试报告", 
    									   description="用例执行情况")
    runner.run(case) # case为所有的测试用例
    fp.close()

LOG日志

  1. 使用Python自带的logging
  2. 直接引用即可
import logging

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

自动化测试篇—实战案例:自动化及接口自动化本质及适用场景

log等级

logging.basicConfig()函数包含参数说明

logging模块中定义好的可以用于format格式字符串说明

  • 字段/属性名称    使用格式    描述
  • asctime    %(asctime)s    将日志的时间构造成可读的形式,默认情况下是‘2016-02-08 12:00:00,123’精确到毫秒
  • name    %(name)s    所使用的日志器名称,默认是'root',因为默认使用的是 rootLogger
  • filename    %(filename)s    调用日志输出函数的模块的文件名; pathname的文件名部分,包含文件后缀
  • funcName    %(funcName)s    由哪个function发出的log, 调用日志输出函数的函数名
  • levelname    %(levelname)s    日志的最终等级(被filter修改后的)
  • message    %(message)s    日志信息, 日志记录的文本内容
  • lineno    %(lineno)d    当前日志的行号, 调用日志输出函数的语句所在的代码行
  • levelno    %(levelno)s    该日志记录的数字形式的日志级别(10, 20, 30, 40, 50)
  • pathname    %(pathname)s    完整路径 ,调用日志输出函数的模块的完整路径名,可能没有
  • process    %(process)s    当前进程, 进程ID。可能没有
  • processName    %(processName)s    进程名称,Python 3.1新增
  • thread    %(thread)s    当前线程, 线程ID。可能没有
  • threadName    %(thread)s    线程名称
  • module    %(module)s    调用日志输出函数的模块名, filename的名称部分,不包含后缀即不包含文件后缀的文件名
  • created    %(created)f    当前时间,用UNIX标准的表示时间的浮点数表示; 日志事件发生的时间--时间戳,就是当时调用time.time()函数返回的值
  • relativeCreated    %(relativeCreated)d    输出日志信息时的,自Logger创建以 来的毫秒数; 日志事件发生的时间相对于logging模块加载时间的相对毫秒数
  • msecs    %(msecs)d    日志事件发生事件的毫秒部分。logging.basicConfig()中用了参数datefmt,将会去掉asctime中产生的毫秒部分,可以用这个加上

生成log脚本封装

#LOG日志记录
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                        datefmt='%a, %d %b %Y %H:%M:%S',
                        filename=log_path + '/' + now + r"result.log",
                        filemode='w')
    logger = logging.getLogger()
    logger.info(case)

Unittest函数入口集成报告和日志

# coding=utf-8
import unittest
import time,datetime
from common import HTMLTestRunner
from common.send_mail import sendmain
import os
import logging
 
now_path = os.path.dirname(os.path.realpath(__file__)) # 获取当前路径
 
report_path = os.path.join(now_path , "../report") # HTML报告存储路径
log_path = os.path.join(now_path , "../log") # LOG日志存储路径
 
if not os.path.exists(report_path): os.mkdir(report_path)
case_path = os.path.join(now_path , "../case") # 测试用例路径
 
 
def load_case(casepath=case_path, rule="test*.py"):
    '''加载所有的测试用例'''
    discover = unittest.defaultTestLoader.discover(casepath, pattern=rule,) # 定义discover方法的参数
    return discover
 
def run_case(test_case, reportpath=report_path):
    '''执行所有的用例, 并把结果写入测试报告'''
 
    #HTNL格式报告
    now = datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S')
    report = reportpath + "/" + now + r"result.html"
    print("测试报告生成地址:%s"% report)
    fp = open(report, "wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2, title="xxxx接口自动化测试报告", description="用例执行情况")
 
    #LOG日志记录
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                        datefmt='%a, %d %b %Y %H:%M:%S',
                        filename=log_path + '/' + now + r"result.log",
                        filemode='w')
    logger = logging.getLogger()
    logger.info(test_case)
 
    # 调用load_case函数返回值
    runner.run(test_case)
    fp.close()
    time.sleep(2)
    sendmain(report, mail_to=['yyyyyy@qq.com'])
    print("发送测试报告邮件OK")
 
if __name__ == "__main__":
    my_cases = load_case()
    run_case(my_cases)

绵薄之力

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[NLP] LlaMa2模型运行在Mac机器

本文将介绍如何使用llama.cpp在MacBook Pro本地部署运行量化版本的Llama2模型推理,并基于LangChain在本地构建一个简单的文档Q&A应用。本文实验环境为Apple M1 芯片 8GB内存。 Llama2和llama.cpp Llama2是Meta AI开发的Llama大语言模型的迭代版本,…

【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?

情景:传统的爬虫只需要设置fetch_typejs即可,因为可以获取到整个页面。但是现在ajax应用越来越广泛,所以有的网页不能用此种爬虫类型来获取页面的数据,只能用slef.crawl()来发起http请求来抓取数据。 直接上例子: 可以…

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】 1、概述2、实验环境3、 物品说明4-2、自我总结5、本次实验说明1、准备样例2、设置芯片3、编译4、下载5、验证 (1)windows环境下进行烧写1、下…

前端框架Vue学习 ——(六)Vue组件库Element

文章目录 Element 介绍快速入门常见组件表格分页Dialog 对话框组件表单 Container 布局容器 Element 介绍 Element:是饿了么团队研发的,一套为开发者、 设计师和产品经理准备的基于Vue 2.0的桌面端组件库。 组件:组成网页的部件,…

C语言成弟弟了?就业还得是御三家

文章目录 一、前言二、ChatGPT查到的数据三、数据亮点 1.C语言近3年数据大跌2.招聘数量每年都在剧增的是全栈工程师3.薪资涨幅最高的是全栈和网安 四、结语 一、前言 不仅前在微信群里搭建了一个ChatGPT 5.0做智能助手,让他来帮我回答群问题, 搭建好之…

Zookeeper3.7.1分布式安装部署

上传安装文件到linux系统上面 解压安装文件到安装目录 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/software/3. 修改解压文件名 [zhangflink9wmwtivvjuibcd2e software]$ mv apache-zookeeper-3.7.1-bin/ zookeeper-3.7…

dbeaver 连接trino 出现Datasource was invalidated

dbeaver 连接trino 出现Datasource was invalidated 问题描述,如图所示: 连接测试通过,但是无法访问数据库 解决 1.首先是看自己的dbeaver连接配置是否有问题 2.看驱动配置是否ok 3.在浏览器上搜索连接的IP是否有结果 eg:192.168…

爆料!马斯克 xAI 打造的ChatGPT竞品被曝光!

夕小瑶科技说 原创 作者 | 王二狗 马斯克旗下公司 xAI 的第一款AI模型曝光! 名为:Grōk ,有望成为ChatGPT最强竞品! Grōk是什么意思呢?二狗我问了一下GPT-4: Grōk AI 曝光12项功能 这次Grōk模型都曝…

Linux MMC子系统 - 3.eMMC 5.1常用命令说明(1)

By: Ailson Jack Date: 2023.11.05 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/162.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。…

Maven的总结

先要了解maven是什么? Maven就是一个软件,掌握软件安装、配置、以及基本功能(项目构建、依赖管理)使用就是本课程的主要目标! 最主要的功能是为了方便Java项目jar包的导入 认识Maven maven的GVAP属性 Maven 中的 GAVP…

通过环境变量实现多个JDK切换

前文: 由于jdk版本需要升级为jdk17,因为jdk8比较常用且稳定,本人又不想卸载掉安装的jdk8,在经过查找资料后找到了可以通过修改环境变量在本地任意切换jdk版本 环境变量配置 网上教程一堆,直接跳过了,这里主要说明怎么通过配置环境变量切换 电脑->属性->高级系统设置-&g…

腾讯云服务器CVM详细介绍_优缺点亲自整理

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

【k8s】pod调度——亲和,反亲和,污点,容忍

官方网址:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/ 一、亲和性 (1)节点亲和性 pod.spec.nodeAffinity ●preferredDuringSchedulingIgnoredDuringExecution:软策略 p开头 ●requiredDuri…

试利用栈的基本操作写出先序遍历二叉树的非递归形式的算法

试利用栈的基本操作写出先序遍历二叉树的非递归形式的算法 代码思路: 要用栈解决先序遍历,我们首先要知道栈的性质和二叉树先序遍历的规则 栈最基本的就是先进后出 而二叉树先序遍历就是“根左右” 利用这两个性质,我们可以先将根结点入队…

【软件测试】其实远远不止需求文档这么简单

我们都知道,软件测试是一门依赖性很强的综合技术,软件测试工程师在施行自己的工作时,总是要依赖其他团队的产出。 比如,我们要依赖着需求团队给出的需求分析说明书来确定测试的方向,又要依赖开发团队产出的实际代码产品…

JavaScript_Date对象_实例方法_get类

计算这一年还剩多少天&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document&…

oracle-sql语句执行过程

客户端输入sql语句。 sql语句通过网络到达数据库实例。 服务器进程(server process)接收到sql语句。 sql – 解析成执行计划&#xff0c;然后sql才能执行。 会将sql和sql的执行计划缓存到共享池中。解析: 会消耗很多资源。 从数据库找数据&#xff0c;先从buffer cache中找&a…

自定义注解格式化处理BigDecimal

目录 一、场景描述 二、实现步骤 1、自定义类 2、使用注解 3、测试 一、场景描述 在开发过程中&#xff0c;如果有实体类的属性中存在BigDecimal的属性&#xff0c;并且需要对其进行校验&#xff0c;例如&#xff1a;限制BigDecimal的小数点位数是两位。但目前没有注解可以…

第六章 块为结构建模 P1|系统建模语言SysML实用指南学习

仅供个人学习记录 概述 块是SysML结构中的模块单元&#xff0c;用于定义一类系统、部件、部件互连&#xff0c;或者是流经系统的项&#xff0c;也用于定义外部实体、概念实体或其他逻辑抽象 块定义图用于定义块以及块之间的相互关系&#xff0c;如层级关系&#xff0c;也用于…

搭建WAMP网站教程(windows+apache+mysql+php)

之前为了学习网络安全&#xff0c;从搭建网站学起&#xff0c;对网站运行有个初步的了解。 今天翻到了之前的笔记&#xff0c;顺手发到csdn上了。 搭建网站步骤 一、Apache 安装Apache&#xff0c;下载Apache之后把Apache解压&#xff0c;此处解压到C:\目录下 2.然后要记得安…