python 生成测试报告并发送邮件
前言:
使用unittest编写自动化测试脚本,执行脚本后可以很方便看到测试用例的执行情况。
但如果想向领导汇报工作,就需要提供更直观的测试报告。
思路:
使用unittest编写测试用例,HTMLTestRunner生成测试报告,yagmail发送测试报告
代码:
测试用例:
from selenium import webdriver
import unittest,time,os
from HTMLTestRunner import HTMLTestRunner #配置信息
desired_caps = {}
desired_caps["platformName"] = "Android"
desired_caps["platformVersion"] = "7.0"
desired_caps["deviceName"] = "HuaWeiP9"
desired_caps["appPackage"] = "com.android.calculator2"
desired_caps["appActivity"] = "com.android.calculator2.Calculator"
# 支持输入中文
desired_caps["unicodeKeyboard"] = "True"
desired_caps["resetKeyboard"] = "True" class TestCalc(unittest.TestCase): @classmethod
def setUpClass(cls): # 启动appium服务
cls.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) @classmethod
def tearDownClass(cls): cls.driver.quit() def test_add(self):
'''加法计算''' driver = self.driver
driver.find_element_by_id("com.android.calculator2:id/digit_7").click()
driver.find_element_by_id("com.android.calculator2:id/op_add").click()
driver.find_element_by_id("com.android.calculator2:id/digit_3").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
res = driver.find_element_by_id("com.android.calculator2:id/formula").text # 添加断言
self.assertEqual(res,"10","结果错误") def test_sub(self):
'''减法计算''' driver = self.driver
driver.find_element_by_id("com.android.calculator2:id/digit_7").click()
driver.find_element_by_id("com.android.calculator2:id/op_sub").click()
driver.find_element_by_id("com.android.calculator2:id/digit_3").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
res = driver.find_element_by_id("com.android.calculator2:id/formula").text # 添加断言
self.assertEqual(res,"4","结果错误") if __name__ == "__main__":
unittest.main() 生成测试报告:
将if __name__ == "__main__": 后的语句做如下修改:
if __name__ == "__main__":
#创建测试套
suite = unittest.TestSuite()
#向测试套添加测试用例
suite.addTest(TestCalc("test_add"))
suite.addTest(TestCalc("test_sub"))
#指定测试报告存储路径 及 文件名
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename= "../report/"+now+" result.html"
#使用HTMLTestRunner生成HTML测试报告
with open(filename,"wb") as f:
runner = HTMLTestRunner(
stream=f,
title="测试报告",
description = "用例执行情况"
)
runner.run(suite)
测试报告格式如图:
用例通过:

用例失败:

发送邮件
#测试报告存储路径
report_dir = "../report/"
#将测试报告文件夹下的所有文件名作为一个列表返回
lists = os.listdir(report_dir)
#对所有测试报告按照生成时间进行排序
lists.sort(key = lambda filename : os.path.getmtime(report_dir+filename))
#获取最新的测试报告
recent=lists[-1] #指定最新的测试报告路径
file=os.path.join(report_dir,recent) #填写登录信息
yag = yagmail.SMTP("username@126.com","password","smtp.126.com") #邮件正文
content="计算器测试报告" #将测试报告作为附件发送
yag.send("username@hmkx.cn","测试报告",content,file)

补充说明:
1.填写的邮箱登录密码为:126邮箱授权码,不是自己126账号的登录密码
2.不理解sort方法请查阅:http://www.cnblogs.com/kaerxifa/p/8543491.html
3.不理解os.path.join()请查阅:http://www.cnblogs.com/kaerxifa/p/8543505.html
4.lists.sort(key = lambda filename : os.path.getmtime(report_dir+filename))
sort 方法改变原数组内部的排列顺序,key参数表示一个函数,依次将数组内的每一个元素作用在该函数
关于匿名函数:lambda,举个小例子:
函数定义:
func=lambda x: x+1
调用方法:
func(4) 返回值 5
就这样,一个还冒着热乎气儿的测试报告就诞生了,第一次通过代码方式将用例报告以邮件形式发送,是不是还挺有成就感的呢~
python 生成测试报告并发送邮件的更多相关文章
- 19.Selenium+Python生成测试报告
1.代码如下所示: from selenium import webdriver import unittest import HTMLTestRunner class BaiduSearch(uni ...
- Python 通过配置文件 读取参数,执行测试用例,生成测试报告并发送邮件
#-*-coding:utf-8-*- #测试用例配置参数 #XXXXX_Uitest->baseinfo->__init__.py base_url = "http://XXX ...
- Python3+HTMLTestRunner+SMTP生成测试报告后发送邮件
在前一篇https://www.cnblogs.com/zhengyihan1216/p/11549820.html 中记录了如何生成html格式的报告, 这篇记录下怎么将测试报告通过邮件发出 1.对 ...
- python生成测试报告HTMLTestRunner时报错ValueError: write to closed file的解决办法
使用HTMLTestRunner时出现了以下问题: self.stream.write(output.encode('utf8')) ValueError: write to closed file ...
- python+selenium生成测试报告后自动发送邮件
标签(空格分隔): 自动化测试 运行自动化脚本后,会产生测试报告,而将测试报告自动发送给相关人员,能够让对方及时的了解测试情况,查看测试结果. 整个脚本包括三个部分: 生成测试报告 获取最新的测试报告 ...
- Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,
测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...
- python之单元测试_生成测试报告
(1)HTMLTestRunner.py的下载路径:https://pan.baidu.com/s/1Yk2E8d8bIo5_rmpussOE9Q 提取码:0jae (2)HTMLTestRunner ...
- python使用 HTMLTestRunner.py生成测试报告
HTMLTestRunner.py python 2版本 下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html 使用时,先建立一个”PyDe ...
- python selenium-webdriver 生成测试报告
测试最后的一个重要的过程就是生成一份完整的测试报告,生成测试报告的主要是通过python的一个第三方模块HTMLTestRunner.py生成,但是生成的测试报告不是特别的美观,而且没有办法统计测试结 ...
随机推荐
- 1、ceph-deploy之部署ceph集群
环境说明 server:3台虚拟机,挂载卷/dev/vdb 10G 系统:centos7.2 ceph版本:luminous repo: 公网-http://download.ceph.com,htt ...
- 学习笔记——TCP“三次握手”和“四次挥手”,简单介绍
TCP/IP协议中,TCP协议提供可靠的连接服务,采用“三次握手”建立一个连接. (1)第一次握手:客户端发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认. (2)第二次 ...
- [bzoj1935][Shoi2007]Tree 园丁的烦恼 _树状数组
Tree 园丁的烦恼 bzoj-1935 Shoi-2007 题目大意:给定平面上的$n$个点,$m$次查询矩形点个数. 注释:$1\le n,m\le 5\cdot 10^5$. 想法:静态二维数点 ...
- 利用jQuery设计横/纵向菜单
在网页中,菜单扮演着"指路者"的角色.怎样设计一个人性化的菜单呢.以下小编带着大家一起做. 效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...
- UIScrollView滚动时隐藏底部导航栏问题
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"開始滚动"); int currentPostio ...
- luogu3358 最长k可重区间集问题 网络流
题目大意: 关键词:最小费用最大流 不相交路径 如果两个线段重叠了,那我们则把一个线段放在下一层,另一个线段放在上一层.把流量为1的流看作一条线,一条线把位于同一层的线段(互不重叠)都串了起来.最多有 ...
- vim copy,find and replace
VIM选择文本块/复制/粘贴 在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择.其它相关命令:v:按字符选择.经常使用的模式,所以亲自尝试一下它. V:按 ...
- Recommended Settings for Tracing and Message Logging
https://docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/tracing/recommended-settings-for-t ...
- 1D1D动态规划优化
1D1D动态规划优化 1D/1D 动态规划优化初步所谓1D/1D 动态规划,指的是状态数为O(n),每一个状态决策量为O(n)的动态规划方程.直接求解的时间复杂度为O(n2),但是,绝大多数这样的方程 ...
- IJ-Error:常见错误
ylbtech-IJ-Error:常见错误 1.返回顶部 1. This application has no explicit mapping for /error, so you are seei ...