我们先来简单介绍一下unittest框架,先上代码:

1、建立结构的文件夹:

注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选package;

建好了文件夹,第一步就算完成啦!

2、第二步,面向对象的思想

面向对象很简单,面向对象就是把所有的功能都当做单独的模块,模块之间的耦合(就是关联)度越低,那么你的结构越好,当你需要这些功能时,你只需要去调用相应的模块即可,这样的好处就是如果出错一定是调用的时候出错,而不会写了一大堆代码导致不容易定位报错的根源,当然啦,前提是你封装起来的模块没有错误。

3、第三步,封装模块

3.1 封装常量

把你用到的不变的东西放到一起,这样以后改起来会很方便,比如邮件的发件人、收件人、密码、账号等等……

# coding: utf-8

# 邮件配置
mail_host = 'smtp.163.com'
Smtp_Sender = 'warrior_meng08@163.com'
Smtp_Password = '授权码'
Smtp_Receivers = ['312652826@qq.com','721@qq.com']

将以上内容放在baseInfo包(package)下面的__init __.py文件中

3.2 封装发送邮件的方法
接下来封装一个发送邮件的方法

# coding: utf-8

import sys

reload(sys)
sys.setdefaultencoding('utf8')
import baseInfo
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart def sendMail(file):
f = open(file, 'rb')
# 读取测试报告正文
mail_body = f.read()
f.close() # 创建一个带附件的实例
msg = MIMEMultipart()
msg['From'] = baseInfo.Smtp_Sender
receiver = ','.join(baseInfo.Smtp_Receivers)
msg['To'] = receiver
msg['Subject'] = 'Python test' # 邮件正文
msg.attach(MIMEText('sending email test', 'plain', 'utf-8')) # 构造附件1
att1 = MIMEText(mail_body, 'base64', 'utf-8')
att1['Content-Type'] = 'application/octet-stream'
att1['Content-Disposition'] = 'attachment; filename= %s' % file
msg.attach(att1) try:
smtpObj = smtplib.SMTP()
smtpObj.connect(baseInfo.mail_host, 25)
smtpObj.login(baseInfo.Smtp_Sender, baseInfo.Smtp_Password)
smtpObj.sendmail(baseInfo.Smtp_Sender, receiver, msg.as_string())
print 'Success'
except smtplib.SMTPException:
print 'Error'

将以上代码放在common->module->email_module.py文件中,作为一个模块(对象),将来直接调用。

4、用例

接下来我们先写用例,这里为了有代表性,先写最简单的用例:

# coding: utf-8

import unittest

class Testcases(unittest.TestCase):

    def setUp(self):
print "setUp" def tearDown(self):
print "tearDown" def test01(self):
print "test01" def test03(self):
print "test03" def test02(self):
print "test02"

是不是很简单~~将上面的代码放在testcase包下面的Testcases.py文件中

5、运行用例并发送测试报告

这里我们只写了3个用例,实际工作中要写几百条用例,我们不可能一个一个的去运行,那样鼠标会点坏的……所以我们需要写一个方法,一次运行所有的用例,这也是unittest框架的方便之处,上代码:

# coding: utf-8

import unittest
from common.module import email_module def all_case():
#你的文件路径
case_dir = r"E:\a\mytest\testcase"
discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py", top_level_dir=None) return discover if __name__=='__main__':
#导入HTMLTestRunner模块
import HTMLTestRunner
#结尾一定要写.html哦
report_path = r"E:\你的路径\report\report.html"
fp = open(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"测试报告", description=u"用例执行情况")
runner.run(all_case())
fp.close() #调用封装好的sendMail方法,参数为上面的文件
mail = email_module.sendMail(report_path)
print "Email sending Success"

将上面的代码放在runAllTests.py文件中,注意这里的HTMLTestRunner.py

大家可以在这里下载,直接保存那个.py文件即可

http://tungwaiyip.info/software/HTMLTestRunner.html
如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。
然后将这个HTMLTestRunner.py文件放在你的Python安装目录的lib文件夹里即可

到这里就大功告成啦!最后运行runAllTests.py文件,一次就好,不用担心鼠标点坏,在你的运行显示框处就会有如下显示:

注意,后面打印Success会稍微慢一些,因为是在调用发送邮件的方法,需要经过登录、发送的过程。然后你的收件箱就会收到相应的邮件啦:

下载下面这个附件,可以看到经过HTMLTestRunner.py处理后的测试报告了,这里就不给大家展示了。
以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

UnitTest框架的快速构建与运行的更多相关文章

  1. 还在等待漫长的iOS构建过程?来试试通过命令行的方式进行iOS应用快速构建和运行吧

    不必多言,Xcode慢得很是众所周知的了.更甚者是,我有时发觉自己太依赖于Cocoa Touch的自动完成功能了,这可是个天使和魔鬼的结合体! 故此我开始去寻觅一个替代的流程来通过命令行来实现我需要的 ...

  2. SpringBoot框架:快速入门搭建运行一个应用程序(一)

    一.环境配置 Java环境:1.8版本 开发工具:IntelliJ IDEA 二.简单应用 1.创建项目 选择创建的项目类型为Spring Initializr,Project SDK选择1.8版本的 ...

  3. 带你十分钟快速构建好 SpringBoot + SSM 框架

    目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐.而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了 ...

  4. UIkit – 轻量级前端框架,帮助你快速构建 Web 界面

    UIKit 是一个轻量级,模块化的前端框架,用于构建快速和强大的 Web 界面.UIKit 为您提供了 HTML,CSS 和 JavaScirpt 组件,使用简单,容易定制和扩展.UIKit 基于 L ...

  5. 【spring-boot】快速构建spring-boot微框架

    spring-boot是一个快速构建环境的一套框架,其设计理念是尽可能的减少xml的配置,用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义 ...

  6. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  7. unittest框架官方翻译:中文版

    指数 模块 | 下一个 | 上一个 | Python » 英语 法国 日本 朝鲜的   开发(3.8) 3.7.3rc1 3.6 3.5 2.7  文档 » Python标准库 » 开发工具 » | ...

  8. 使用Asp.net WebAPI 快速构建后台数据接口

    现在的互联网应用,无论是web应用,还是移动APP,基本都需要实现非常多的数据访问接口.其实对一些轻应用来说Asp.net WebAPI是一个很快捷简单并且易于维护的后台数据接口框架.下面我们来快速构 ...

  9. 快速构建Windows 8风格应用21-构建简单媒体播放器

    原文:快速构建Windows 8风格应用21-构建简单媒体播放器 本篇博文主要介绍如何构建一个简单的媒体播放器. <快速构建Windows 8风格应用20-MediaElement>博文中 ...

随机推荐

  1. AC自动机&后缀自动机

    理解的不够深 故只能以此来加深理解 .我这个人就是蠢没办法 学长讲的题全程蒙蔽.可能我字符串就是菜吧,哦不我这个人就是菜吧. AC自动机的名字 AC 取自一个大牛 而自动机就比较有讲究了 不是寻常的东 ...

  2. x86架构:保护模式下加载并运行用户程序

    本章的代码分3个模块: MBR 引导:加载内核core程序 core:包含内核代码段(从磁盘加载用户程序并重定位).内核数据段(存放api名称.临时缓冲.字符串等).API段(供用户程序调用) 用户程 ...

  3. Golang SQL连接池梳理

    目录 一.如何理解数据库连接 二.连接池的工作原理 三.database/sql包结构 四.三个重要的结构体 4.1.DB 4.2.driverConn 4.3.Conn 五.流程梳理 5.1.先获取 ...

  4. Linux的VMWare中Centos7用户和用户管理三个系统文件(/etc/passwd-shadow-group解读)和批量创建用户user及用户工作环境path

    Linux 用户和用户组管理 用户工作环境PATH Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用 ...

  5. JavaWeb项目的部署以及远程调试

    Linux环境下软件的安装 Linux环境下的程序的安装.更新.卸载和查看. rpm 命令:相当于windows程序的添加/卸载程序,进程程序的安装,查看,卸载. 本地程序安装:rpm -ivh 程序 ...

  6. Nginx MogileFS 配置

    配置好MogileFS, 见mogilefs的安装与配置随笔 下载nginx.1.10.3.tar.gz, nginx_mogilefs_module.1.0.4.tar.gz 编译安装 将连个tar ...

  7. layui 事件监听触发

    1:监听select 改变 <!-- 不用form 用div也可以 --> <form class="layui-form"> <div class= ...

  8. geth常用命令

    转载地址 https://blog.csdn.net/qq_36124194/article/details/83686823 geth常用命令 初始化私链 geth --datadir /path/ ...

  9. 最后之作-Last Order(bushi

    最近化学学有机选修,讲羧酸的时候我想到一个问题:不考虑空间异构.能否稳定存在等问题,某高级饱和脂肪酸有多少种同分异构体?做为一名退役的OIer,我将它抽象为了另一个问题:含\(n\)个\(C\)的饱和 ...

  10. ESLint 使用简介

    C 语言诞生之初,程序员编写的代码风格各异,在移植时会出现一些因为不严谨的代码段导致无法被编译器执行的问题.于是在 1979 年,一款叫 lint[1] 的程序被开发出来,能够通过扫描源代码检测潜在的 ...