PyTestReport使用
PyTestReport详细介绍:
https://testerhome.com/opensource_projects/78
示例代码
#coding:utf-8
import os,unittest,time,HTMLTestRunner,smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from config import readConfig
from pytestreport import TestRunner
# import HTMLTestRunner_jpg # 当前脚本所在文件真实路径
cur_path = os.path.dirname(os.path.realpath(__file__))
print(cur_path)
# print(type(cur_path)) # 第一步:用discover方法加载所有的测试用例
def add_case(caseName="case",rule="test*.py"):
'''第一步:加载所有的测试用例'''
case_path = os.path.join(cur_path,caseName) #用例文件夹
# 如果不存在这个case文件夹,就自动创建一个
if not os.path.exists(case_path):os.mkdir(case_path)
print("\033[31mtest case path:\033[0m%s"%case_path) #定义discover方法的参数
discover = unittest.defaultTestLoader.discover(case_path,
pattern=rule,
top_level_dir=None) print(discover)
return discover # 第二步:生成HTML报告
def run_case(all_case,reportName="report"):
'''第二步:执行所有的用例,并把结果写入HTML测试报告'''
now = time.strftime("%Y_%m_%d_%H_%M_%S")
report_path = os.path.join(cur_path,reportName) # 测试报告文件夹 # 如果不存在这个report文件夹,就自动创建一个
if not os.path.exists(report_path):os.mkdir(report_path)
# report_abspath = os.path.join(report_path,now+"result.html") # 配合jenkins生成的测试报告名称,固定为result.html
report_abspath = os.path.join(report_path, "result.html") print("\033[31mreport path:\033[0m%s"%report_abspath) fp = open(report_abspath,"wb") # PyTestReport测试报告
with open(report_abspath,'wb') as fp:
runner = TestRunner(fp,
title='测试标题',
description='测试描述',
verbosity=2
)
# 调用add函数返回值
runner.run(all_case) # 第三步:获取最新的测试报告
def get_report_file(report_path):
'''第三步:获取最新的测试报告'''
lists = os.listdir(report_path)
lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path,fn)))
print(u'最新测试生成的报告:'+lists[-1]) # 找到最新生成的测试报告文件
report_file = os.path.join(report_path,lists[-1])
return report_file # 第四步:发送测试报告到邮箱
def send_mail(sender,psw,receiver,smtpserver,report_file,port):
'''第四步:发送最新的测试报告内容'''
with open(report_file,"rb") as f:
mail_body = f.read() # 定义邮件内容
msg = MIMEMultipart()
body = MIMEText(mail_body,_subtype='html',_charset='utf-8')
msg['Subject'] = '自动化测试报告'
msg["from"] = sender
msg["to"] = receiver
msg.attach(body) # 添加附件
att = MIMEText(open(report_file,"rb").read(),"base64","utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] = 'attachment; filename="report.html"'
msg.attach(att) try:
smtp = smtplib.SMTP_SSL(smtpserver,port)
except:
smtp = smtplib.SMTP()
smtp.connect(smtpserver,port) # 用户名密码
smtp.login(sender,psw)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
print('test report email has send out !') if __name__ == "__main__":
all_case = add_case() # 1加载用例
# 生成测试报告的路径
run_case(all_case) # 2执行用例
# 获取最新的测试报告文件
report_path = os.path.join(cur_path,"report") # 用例文件夹
report_file = get_report_file(report_path) # 3获取最新的测试报告 #邮箱配置
sender = readConfig.sender
psw = readConfig.psw
smtp_server = readConfig.smtp_server
port = readConfig.port
receiver = readConfig.receiver
# send_mail(sender,psw,receiver,smtp_server,report_file,port) # 4最后一步发送报告
生成的测试报告
PyTestReport使用的更多相关文章
- PyTestReport 自动化报告
安装 pip install PyTestReport pytest框架执行命令 pytest.main(["-s", "test_login.py", &qu ...
- 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例
查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...
- pytest文档43-元数据使用(pytest-metadata)
前言 什么是元数据?元数据是关于数据的描述,存储着关于数据的信息,为人们更方便地检索信息提供了帮助. pytest 框架里面的元数据可以使用 pytest-metadata 插件实现.文档地址http ...
随机推荐
- sql下的xml配置文件中特殊使用的sql语句编写
1.使用服用的sql语句------------查询学生表所有字段 <sql id="selectAllStuAll"> select stu.id,stu.name, ...
- git日常开发中的使用
作者:python技术人 博客:https://www.cnblogs.com/lpdeboke 1.在远程新建一个仓库,可以使github.gitlib或者bitbucket,这里以bitbucke ...
- PTA第二题
#include<string.h> #include<stdio.h> #include<malloc.h> ]; ][]={"ling",& ...
- Jquery中$(function(){})
1. 在哪书写js文件 如果我们要执行一段js代码,我们该怎么办呢? 1.我们可以写一个js文件,在js文件里写执行函数,然后再<script src='...'> ... </sc ...
- HDUSTOJ-1558 Flooring Tiles(反素数)
1558: Flooring Tiles 时间限制: 3 Sec 内存限制: 128 MB提交: 59 解决: 36[提交][状态][讨论版] 题目描述 You want to decorate ...
- PowerDesigner 使用说明
1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner 快捷工具栏 palette 不见了,怎么重新打开,找回来呢 上网搜索了一下"powerdesig ...
- asp.net webapi自定义输出结果类似Response.Write()
asp.net webapi自定义输出结果类似Response.Write() [HttpGet] public HttpResponseMessage HelloWorld() { string ...
- vue函数防抖和节流
Vue函数防抖和节流https://zhuanlan.zhihu.com/p/72363385 <template> <div> <input type='text' v ...
- openstack stein部署手册 5. placement
# 建立数据库用户及权限 create database placement; grant all privileges on placement.* to placement@'localhost' ...
- idea旗舰版续命
首先鼓励大家使用正版!我一直用的是免费的社区版,但发现有一些功能被阉割了,比如weblogbic就不支持,无奈现在的项目要用到这个,只能去下载旗舰版. 旗舰版需要付费,作为程序员的我为了一个临时的项目 ...