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 ...
随机推荐
- Spring源码解析-核心类之XmlBeanFactory 、DefaultListableBeanFactory
DefaultListableBeanFactory XmlBeanFactory 继承自 DefaultListableBeanFactory , 而 DefaultListableBeanFact ...
- Git-第二篇廖雪峰Git教程学习笔记(1)基本命令,版本回退
1.安装Git-2.16.2-64-bit.exe后,设置用户名,用户邮箱 #--global参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地 ...
- java_第一年_JavaWeb(10)
JavaWeb的两种开发模式 JSP+JavaBean框架:JavaBean负责封装数据.提供方法,JSP负责处理用户请求和显示数据:只能开发较为简单的业务: JSP+JavaBean+Servlet ...
- 【Vue】通过自定义指令回顾 v-内置指令
Vue.js 的各种指令(Directives)更加方便我们去数据驱动 DOM,例如 v-bind.v-on.v-model.v-if.v-for.v-once 等内置指令,这些指令的职责就是当表达式 ...
- WinForm的RadioButton使用小技巧
http://www.cnblogs.com/sjrhero/articles/1883155.html 当多个RadioButton同在一个容器里面的时候,多半的操作都是要得到其中一个的值这个时候我 ...
- .NET Core _linux sdk安装
根据官方介绍页面的步骤: 步骤1. sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/do ...
- FFmpeg从入门到出家(FLV文件结构解析)
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式.其标准定义为<Adobe Flash Video File Format Specif ...
- Sql Server 2008安装时提示重启计算机失败解决办法
在键盘上按下组合键[Win]+[R],调出运行窗口. 在窗口中输入“regedit”,点击确定,打开注册表管理界面. 在注册表左侧目录栏中找到如下位置:“HKEY_LOCAL_MACHINE\ ...
- STM32之模拟串口设计
一.设计用途: 公司PCB制成板降成本,选择的MCU比项目需求少一个串口,为满足制成板成本和项目对串口需求,选择模拟一路串口. 二.硬件电路: 三.设计实现: 工具&软件:STM32F030R ...
- V7双雄-基于Virtex7XC7VX690T的高性能计算板卡解决方案
北京太速V7双雄-基于Virtex7XC7VX690T的高性能计算板卡