unittest测试框架 (下)
目录
- unittest批量执行
- 生成html测试报告
- unittest之装饰器
- 自动发送邮件功能
项目目录
批量执行
生成html测试报告
为了更好的展示测试报告,最好是生成 HTML格式的。
unittest里面是不能生成 html格式报告的,需要导入一个第三方的模块:HTMLTestRunner。
http://tungwaiyip.info/software/HTMLTestRunner.html
下载后手动拖到 python安装文件的Lib 目录下
下载 Download 下的第二个文件test_HTMLTestRunner.py
stream: 测试报告写入文件的存储区域
title: 测试报告的主题
description:测试报告的描述
修改引入HTMLTestRunner文件
第94行:import StringIO 改为import io
第539行:self.outputBuffer = StringIO.StringIO()
改为:self.outputBuffer = io.StringIO()
第631行:print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
改为:print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
第642行:if not rmap.has_key(cls): 改为:if not cls in rmap:
第766行:uo = o.decode(‘latin-1’) 改为:uo = o
第772行:ue = e.decode(‘latin-1’) 改为:ue = e
测试报告文件名:
time.time():获取当前时间戳。
time.ctime():当前时间的字符串形式。
time.localtime():当前时间的struct_time形式。
time.strftime():用来获得当前时间,可以将时间格式化为字符串。
Python中时间日期格式化符号(区分大小写)如下页所示:
now = time.strftime("%Y-%m-%d %H_%M_%S")
report_path = "C:\\Users\\laohu\\workspace\\pydev_test\\case_piliang\\report\\" + now + "_result.html"
unittest装饰器
用 setUp与setUpClass 区别
- setup():每个测试 case运行前运行
- teardown():每个测试 case运行完后执行
- setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
- tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次
- @是修饰符,classmethod 是python里的类方法
自动发邮件功能
自动发送邮件是自动化测试项目的重要需求之一。
SMTP是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
Python的smtplib模块提供了一种很方便的途径用来发送电子邮件。
导入SMTP对象,具体使用方法。
connect(host, port)方法参数说明如下:
- host: 指定连接的邮箱服务器。
- port:指定连接服务器的端口号。
login(user, password)方法参数说明如下:
- user:登录邮箱用户名。
- password:登录邮箱密码。
sendmail(from_addr, to_addrs, msg, …)方法参数说明如下:
- from_addr:邮件发送者地址。
- to_addrs:字符串列表,邮件发送地址。
- msg:发送消息。
- quit()方法:用于结束SMTP会话
发送邮件的两种方式:
方式一:自己邮箱的WEB页面,输入自己邮箱的用户名密码,打开发邮件页面,填写对方的邮箱地址及邮件标题与正文,完成后单击发送。
方式二:下载安装客户端,填写邮箱账号、密码、邮箱服务器,一般的邮箱客户端会默认记下这些信息,后面与方法一相同。
简单邮件发送验证
# 引入
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#发送邮箱服务器
smtpserver ='smtp.sina.cn'
#发送邮箱用户/密码
user ='1234567890@sina.cn'
password ='1234567890'
#发送邮箱
sender = '1234567890@sina.cn'
#接收邮箱
receiver = '987654321@qq.com'
#发送邮箱主题
subject = 'Python email test'
#编写HTML类型的邮件正文
msg = MIMEText("正文内容")
msg['Subject'] = 'subject_test'
msg['From'] = sender
msg['To'] = receiver
#连接发送邮件
smtp =smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
发送带附件的邮件
# 引入
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib, datetime
def SendMailAttach():
#发送邮箱服务器
smtpserver = 'smtp.sina.cn'
#发送邮箱用户/密码
user = '1234567890@sina.cn'
password = '1234567890'
#发送邮箱
sender = '1234567890@sina.cn'
#接收邮箱
receiver = '0987654321@sina.cn'
msg = MIMEMultipart()
att = MIMEText(open('D:\\test\\testTemplate.html', 'rb').read(), 'base64', 'gb2312')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="testTemplate.html"'
msg.attach(att)
msg['From'] = sender
msg['To'] = receiver
msg['subject'] = Header('测试结果(' + str(datetime.date.today()) + ')','utf8')
body = "Python test mail"
msg.attach(MIMEText(body, 'plain'))
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(msg['from'], msg['to'],msg.as_string())
smtp.quit()
SendMailAttach()
查找最新的测试报告
整合自动发邮件功能