根据我上个随笔的unittest框架优化得来,虽然对于smtp模块还是有点迷糊,不过还是勉强搭建运行成功了,还是先上代码:

#login_test.py
import requests
class Login():def test_login(self,username,password):url = "http://localhost:8080r/login"user_pwd = {}user_pwd["mobilephone"] = usernameuser_pwd["pwd"] = passwordresult = requests.get(url, params=user_pwd)list = (result.text).split(",")return list[3].split(":")[1].split("}")[0]if __name__ == '__main__':result = Login()Return = result.test_login("18688773461","123456")print(Return)

#data_test.py
from openpyxl import load_workbook
class Date_test():@classmethoddef Date_test_1(cls):wb = load_workbook("login_data.xlsx")ws = wb.get_sheet_by_name("Sheet1")list1 = []for i in range(1, ws.max_row + 1):list = []for j in range(1, ws.max_column + 1):str = ws.cell(i, j).valuelist.append(str)list1.append(list)wb.close()return list1@staticmethoddef Email_Date():username = “username”password = “password”To_Email = “To_Email ” # 可以是多个邮箱地址,用“,”分离开return username,password,To_Email

#test_case.py
from login_test import Login
from ddt import ddt,unpack,data
from data_test import *
import unittest
@ddt
class Run_Test(unittest.TestCase):#继承unittest.TestCase"""读取excel文件和cfg文件中数据:param xlsx::param ws::return:"""@data(*Date_test.Date_test_1())@unpackdef test_run1(self,Username,Password,Text):self.Result = Login()Return = self.Result.test_login(Username,Password)self.assertEqual(eval(Return),Text)#测试用例
if __name__ == '__main__':unittest.main()

#Email_console.py
import HTMLTestRunnerNew
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import unittest
import os
from data_test import *
from email.mime.multipart import MIMEMultipart
class Email_Console():def __init__(self):self.username,self.password,self.To_Email= Date_test.Email_Date()def send_main(self,file_new):"""发送邮件方法:param file_new::return:"""msg = MIMEMultipart("Emaik_TestText")msg['Subject'] = Header('自动化测试报告', 'utf-8')msg['From'] = self.usernamemsg['To'] = self.To_Emailwith open(file_new , 'rb') as f:mail_body = f.read()msg.attach(MIMEText(mail_body, 'html', 'utf-8'))with open("result.html","rb") as f:mail_attach = f.read()att1 = MIMEText(mail_attach, 'base64', 'utf-8')att1["Content-Type"] = 'application/octet-stream'att1["Content-Disposition"] = 'attachment; filename="report_test.html"'msg.attach(att1)try:smtp = smtplib.SMTP()smtp.connect("smtp.163.com",25)smtp.login( self.username,self.password)smtp.sendmail( self.username, self.To_Email.split(",") , msg.as_string())smtp.quit()except Exception as e:print("Send Email Failed!!!")raise edef new_report(self,testreport):"""生成并查找查找最新测试报告方法:param testreport::return:"""# 生成测试用例fp = open("result.html", 'wb')runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fp, title='2019年3月28日作业测试报告', description='所有测试情况',tester="桂马")discove = unittest.defaultTestLoader.discover(".", pattern="test_*.py")runner.run(discove)fp.close()#查找测试用例lists = os.listdir(testreport)lists.sort(key=lambda fn: os.path.getmtime(testreport + "\\" + fn))file_new = os.path.join(testreport , lists[-1])print(file_new)return file_newif __name__ == "__main__":email_test = Email_Console()file_path = email_test.new_report(os.getcwd()) #查找新生的报告email_test.send_main(file_new = file_path) #调用发邮件模块

注意点:

    1.message[To]和message[From]虽然网上有的人也是直接上的汉字,但是不知道为啥我这边总报错,反而直接上邮件地址运行相当顺利

    2.附上附件的代码写了两次,别问为啥,问就是写一遍会报错,卡这个地方卡了许久,留着疑问待后续解决吧

    3.虽然说有些惨不忍睹,不过好歹再加上window的定时运行,然后多添加几行测试用例,一个简陋的不能再简陋的框架就算搭起来了

    4.邮件模块果然是块硬骨头,写完博客继续啃

备注:2019年4月1日更新,优化邮件模块

转载于:https://www.cnblogs.com/keima/p/10624034.html

unittest框架(惨不忍睹低配版)相关推荐

  1. 项目:低配版Everything

    一.项目背景     在任何操作系统中,搜索工具都是必不可少的,不管我们多么认真的对文件进行整理,当文件数量非常多时,都可能需要我们花很长时间来找某个文件.搜索工具可以让我们从大量文件中快速找到我们所 ...

  2. 实现一个基于 IConfiguration 的低配版 FeatureFlag

    实现一个基于 IConfiguration 的低配版 FeatureFlag Intro 在我们的应用中,可能有一些配置开关的需求,某些功能是否启用使用一个配置开关,用的时候就打开,不用的时候就关掉, ...

  3. 【Node.js】论一个低配版Web实时通信库是如何实现的1( WebSocket篇)

    引论 simple-socket是我写的一个"低配版"的Web实时通信工具(相对于Socket.io),在参考了相关源码和资料的基础上,实现了前后端实时互通的基本功能 选用了Web ...

  4. lga2066服务器准系统,LGA2066低配版Corei7-7740K再曝光:21WTDP换来100MHz频率

    Intel的HEDT高端处理器平台的发布时间从之前的8月份提前到了5月底,台北电脑展上就会正式公布,新一代平台插槽从目前的LGA2011升级到LGA2066,而且会有两个版本--Skylake-X架构 ...

  5. 谷歌 ARCore 就是低配版 Tango,它比苹果 ARKit 好在哪?

    [转] https://www.leiphone.com/news/201709/hioiZlgdXIj9fFex.html 雷锋网按:本文作者为 Matt Miesnieks,目前担任 6D.ai ...

  6. 大神解读:谷歌 ARCore 就是低配版 Tango,它比苹果 ARKit 好在哪?

    转自雷锋网:点击打开链接 原标题:大神解读:谷歌 ARCore 就是低配版 Tango,它比苹果 ARKit 好在哪? 雷锋网按:本文作者为 Matt Miesnieks,目前担任 6D.ai 的 C ...

  7. miix4linux双系统,情理之中,意料之外:Lenovo 联想 MIIX4 平板电脑 低配版

    情理之中,意料之外:Lenovo 联想 MIIX4 平板电脑 低配版 2016-01-27 09:20:17 35点赞 36收藏 53评论 自从我的神舟精盾服役4年之后,终于进入半退役,我一直在等su ...

  8. PS快捷键大法,初级低配版

    在PS中,对于初学者,我个人认为其实不用快捷键更能深刻的理解各个工具.操作之间联系和原理,但对于以后的作图修图来说,快捷键实在是装逼利器,并且确实方便快捷,能给我们的工作带来很多便捷.百度上的PS快捷 ...

  9. java muki_基于canvas和web audio实现低配版MikuTap

    导言 最近发掘了一个特别happy的网页小游戏--MikuTap.打开之后沉迷了一下午,导致开发工作没做完差点就要删库跑路了,还好boss瞥了我一眼就没下文了.于是第二天我就继续沉迷,随着一阵抽搐,这 ...

  10. 绝地求生低配版显示当前服务器,绝地求生低配版介绍 绝地求生低配版怎么样...

    绝地求生低配版介绍 绝地求生低配版怎么样 2018-10-04 16:23:13来源:游戏下载编辑:野狐禅评论(0) <绝地求生>官方公布消息要发布针对东南亚地区的低配版本,这个版本怎么样 ...

最新文章

  1. Git安装与Github基本使用(完整版 for mac)
  2. C++ operator关键字(重载操作符)
  3. html border阴影效果_【开发小技巧】—如何使用HTML和CSS创建浮动框效果?
  4. 携程基于Flink的实时特征平台
  5. TVP两周年:携手同行,让未来可见
  6. 辅助类BinaryTreeNode(二叉树节点)
  7. 浅析支付系统的整体架构
  8. shell 管道命令 、、||、>、>>(精)
  9. mysql如何进行以,分割的字符串的拆分,find_in_set使用
  10. [转]配置nginx+apache 其中动态由apache处理,静态由nginx处理
  11. 百度云虚拟服务器搭建,百度云虚拟主机实力呈现 网站搭建最优选择
  12. 计算机系解说词,计算机室解说词
  13. 【强化学习】83篇文献-万字总结
  14. nodejs文件相关模块
  15. Eclipse阿里云镜像源配置
  16. esp分区引导修复失败_让你彻底理解和学会UEFI启动模式下修复引导问题的教程-网络教程与技术 -亦是美网络...
  17. Google快讯-UTStarcom
  18. 服务器基础知识全解(汇总版)
  19. Android开发之方向传感器的使用
  20. 报Keystore was tampered with, or password was incorret的原因

热门文章

  1. idea redis 插件_Redis客户端RDM收费后,还有那些开源的替代品呢?
  2. .describe() python_Stataamp;Python | 分别实现多元线性回归
  3. python个人所得税怎么写_Python实现的个人所得税计算器示例
  4. 协同过滤算法_《推荐系统实践》3.基于物品的协同过滤算法
  5. DUBBO监控环境搭建
  6. Peasy.NET学习之并发问题处理
  7. Windows 2003域更名工具(Domain Rename Tool)
  8. Redhat6 网卡设置 IP地址及主机名配置
  9. c3p0数据库连接池不能取到连接
  10. 利用PHP的VLD查询OPCODE