之前我们在web测试基础2中讲了关于用python写测试用例的方法,在这里我们将web基础2升级一下,进行一个简单的封装
同样这里不做过多的描述直接上代码
首先我们需要建python包,
1.创建测试报告的包自己命名
#-*-coding:utf-8-*- # 导入单元测试 import unittest # 导入单元测试 from unittests import login # 导入自动化测试报告 import HTMLTestRunner # 导入os包 import os
# 实例化套件 suit=unittest.TestSuite() # 将单元测试加入到套件里面 suit.addTest(unittest.makeSuite(login.Login)) # 指定自动化测试报告的生成路径 files=os.getcwd()+"/jd.htnl" # 指定读写方式 wb 以二进制的方式写入 rb 以二进制的方式读取 rb+ 以二进制的方式既可以读取又可以写入 filename=open(files,'wb') # 运行自动化测试报告 runner=HTMLTestRunner.HTMLTestRunner(stream=filename,title=u"京东",description=u"京东登陆用例") runner.run(suit) 2.创建封装好的包
#-*- coding:utf-8 -*- # 导入包 from selenium import webdriver # 倒包 from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 声明类 class FireFox(object): # 打开浏览器的方法 # self 是指类本身,如果将变量赋值给self,也就是赋值给类本身的意思 def firefox_start(self,url): # 打开浏览器 self.driver=webdriver.Firefox() #设置窗口最大化 self.driver.maximize_window() #打开指定网页 self.driver.get(url) #尽量少使用强制休眠。多使用隐式休眠 pass #关闭浏览器 def fire_close(self): #关闭浏览器 self.driver.quit() pass #通过内容实现显示休眠 def TimeLink(self,message): #检查元素 msg=(By.LINK_TEXT,message) #设置休眠 WebDriverWait(self.driver,20,0.5).until(EC.presence_of_element_located(msg)) pass #封装一个通过内容查找控件得的方法 def FindLink(self,message): #调整显示休眠 self.TimeLink(message) #查找 return self.driver.find_element_by_link_text(message) #点击的方法 def ClickLink(self,message): self.FindLink(message).click() #获取当前页面的方法 def getCurrentWindow(self): return self.driver.current_window_handle #获取所有窗口进行切换的方法 def switch_window(self,current): #获取所有窗口 self.allwindow=self.driver.window_handles #使用for循环进行切换 for window in self.allwindow: if window!=current: self.driver.switch_to.window(window) pass #获取title的方法 def getTitle(self): return self.driver.title 3。封装测试用例的包
#-*- coding:utf-8 -*- # 导入单元测试 import unittest # 倒包 from util import firefoxutil # 声明类继承单元测试 class Login(unittest.TestCase): # 实例化对象的方法 # 加注解 @classmethod def setUpClass(self): # 实例化对象 self.fiefox=firefoxutil.FireFox() pass # 每一条测试用例运行之前的方法 def setUp(self): #打开浏览器 self.fiefox.firefox_start("https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F%3Fcu%3Dtrue%26utm_source%3Dbaidu-pinzhuan%26utm_medium%3Dcpc%26utm_campaign%3Dt_288551095_baidupinzhuan%26utm_term%3D0f3d30c8dba7459bb52f2eb5eba8ac7d_0_5b3ca5c08c3d430e92d56c2c8164e4eb") #设置休眠 self.fiefox.TimeLink("关于我们") pass # 每一条测试用例运行结束的是方法 def tearDown(self): #关闭 self.fiefox.fire_close() pass # 测试用例点击关于我们 def test_abount_me(self): #获取当前页面 self.current=self.fiefox.getCurrentWindow() #点击关于我们 self.fiefox.ClickLink("关于我们") #切换窗口 self.fiefox.switch_window(self.current) #获取title self.title=self.fiefox.getTitle() #进行断言 self.assertEqual(self.title,u"企业简介-京东商城") pass 整点高大上的仅供参考:改进的时候我会进行更新的 关于将测试报告发送到邮箱的方法
我们需要在测试报告那个Python中
先倒包:
# 导入发送邮件的包 # 首先导入smtp服务器的包 import smtplib # 导入正文需要用的包 from email.mime.text import MIMEText # 添加主题的包 from email.header import Header
在改文件中加
filename.close() #邮件发送功能 #使用的是smtp服务器 # 指定发送邮件的用户名 send="18301585363@163.com" # 指定接收邮件的邮箱 recever="1471375117@qq.com" # 指定邮件的主题 title="我是中国,你是你好" # 指定需要发送邮件的服务器 emain_server="smtp.163.com" # 指定发送邮件的用户名和密码 username = "18301585363@163.com" password = "gaoxuejun123" # 指定自动化测试报告的路径 files1=os.getcwd()+"/jd.htnl" # 通过流将报告读取出来 filename1=open(files1,"rb") # 将流转为字符串 emain_name=filename1.read() #关闭流 filename1.close() print emain_name # 设置邮件的内容 msg=MIMEText(emain_name,_subtype="html",_charset="UTF-8") # 设置主题 msg['Subject']=Header(title,"UTF-8") #设置发送者和接受者 msg['From']=send msg['To']=recever # 实例化smtp服务器 smtp=smtplib.SMTP() # 开始连接服务器 smtp.connect(emain_server) # 登陆服务器 smtp.login(username,password) #开始发送邮件 smtp.sendmail(send,recever,msg.as_string()) #关闭服务器 smtp.quit()
到这里就差不多结束了。