unittest框架
最近做项目中用selenium+requests开发自动化脚本,对于unittest框架做一些梳理。
unittest思路:首先是要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由 TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。
一、unittest库下的所有类:
__all__ = ['TestResult', 'TestCase', 'TestSuite',
'TextTestRunner', 'TestLoader', 'FunctionTestCase', 'main',
'defaultTestLoader', 'SkipTest', 'skip', 'skipIf', 'skipUnless',
'expectedFailure', 'TextTestResult', 'installHandler',
'registerResult', 'removeResult', 'removeHandler']
TestCase是所有测试类的父类,封装的测试类需要继承TestCase,其中提供了丰富的断言方法,setUp方法用于测试执行前的准备工作如连接数据库打开网页等,tearDown用于测试完之后的善后工作,
资源关闭等。测试方法必须以test_开头。
TestSuite用来生成测试套件,加载测试类中的方法。很多个TestCase集合起来就是一个TestSuite。可以一个一个方法逐步加载,也可以一次性加载类中的所有方法。
TestLoader().loadTestsFromTestCase(类名),一次性将类中的所有测试方法全部加载到suite中
TextTestRunner执行suite中加载进来的测试方法,并生成测试报告。我在项目中用的是HTMLTestRunner,类似于TextTestRunner的功能,生成HTML类型的测试报告。
二、框架结构

三、部分功能实现代码
- 读取Excel参数,转换成list类型

- 截图

- 打包

- 发送邮件
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
class email():
def send_email(self,attach_file):
sender = "***@qq.com"
recv = "544****96@qq.com"
msg = MIMEMultipart()
msg['Subject'] = 'Python自动发送的测试邮件'
msg['From'] = sender
msg['To'] = recv
#三个参数,内容、格式、编码格式
content = MIMEText('<p style="color:red;font-size:30px">Python自动发送的测试邮件</p>','html','utf-8')
msg.attach(content)
#添加附件
attachment = MIMEApplication(open(attach_file,'rb').read())
attachment.add_header('Content-Disposition','attachment',filename='Test_result.rar')
msg.attach(attachment)
#发送
try:
s_obj = smtplib.SMTP()
s_obj.connect(host='smtp.qq.com',port=25)
s_obj.login(user='1069047569@qq.com',password='kitzwpgauumabbha')
s_obj.sendmail(sender,recv,str(msg))
s_obj.quit()
print('已发送')
except Exception as e:
print(e)
print('未成功发送')
if __name__ == '__main__':
rar_data = os.path.abspath('.') + "\\report\\2018-08-09.rar"
email().send_email(rar_data)

浙公网安备 33010602011771号