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使用的更多相关文章

  1. PyTestReport 自动化报告

    安装 pip install PyTestReport pytest框架执行命令 pytest.main(["-s", "test_login.py", &qu ...

  2. 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例

    查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...

  3. pytest文档43-元数据使用(pytest-metadata)

    前言 什么是元数据?元数据是关于数据的描述,存储着关于数据的信息,为人们更方便地检索信息提供了帮助. pytest 框架里面的元数据可以使用 pytest-metadata 插件实现.文档地址http ...

随机推荐

  1. 关于mysql的使用命令(持续更新中...)

    特别提示  本说明中的mysql 是基于windwos平台下的5.5 版本 安装完成后 请到mysql中设置配置文件   链接分享:链接:https://pan.baidu.com/s/1tv4ulZ ...

  2. Java类和对象的内存分配

    类的加载时机: 1.创建对象 2.调用类的静态成员 3.加载子类 类在实例化后的内存分配 1.每次创建对象时,都需要进行加载和创建2个操作: ① 先去判断需要的类是否已经加载,如果已经加载了,则无需再 ...

  3. 将图片地址转为blob格式的例子

    HTML代码: <div id="forAppend" class="demo"></div> Javascript代码: <sc ...

  4. C# XML 解析包含特殊字符的内容

    xml结构会解析一些特殊字符,特别是& <    ,导致XmlDocument 解析错误 解决方法:将内容放在<![CDATA[ ]]>中,例如<![CDATA[2]] ...

  5. td内容超出 以…显示

    table中的td内容超出以省略号显示,需满足的条件是: <style type="text/css"> table{ table-layout: fixed; bor ...

  6. 手机端 css 样式重置

    @charset "utf-8"; body, div, ul, li, ol, h1, h2, h3, h4, h5, h6, input, textarea, select, ...

  7. python基础--2 字符串

    整型 int python3里,不管数字多大都是int类型 python2里面有长整型long 将整型字符串转换为数字 # a='123' # print(type(a),a) # b=int(a) ...

  8. CAS实现SSO单点登录

    环境 cas-server-4.1.8,cas-client-3.4.0,Java-8,Maven-3,Tomcat-7.0.72 CAS Server 安装 点此进入 CAS 下载列表,选择下载 c ...

  9. [Usaco2007 Jan]Telephone Lines架设电话线(最短路,二分)

    [Usaco2007 Jan]Telephone Lines架设电话线 Description FarmerJohn打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向 ...

  10. bzoj1875 [SDOI2009]HH去散步 矩阵快速幂

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1875 题解 如果没有这个"不能立刻沿着刚刚走来的路走回",那么这个题就是一 ...