我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。
上一篇我们讨论了PO模式并举例说明了基本的思路,今天我们继续学习。
本篇文章我们综合一下之前学习的内容,如先将PO模式和我们生成HTML报告融合起来,综合的灵活的使用之前学习的内容。
整体的思路:编写基础类(page类)>登录页面的类(login 类)>通过unittest框架写测试用例>编写执行函数文件(包含生成HTML报告)
1、先列一下之前的脚本:
如下图第一部分基础页面类:
如下图第二部分登录页面类:
第三部分,如下图所示登录方法和执行的内容
2、引入unittest重写测试用例
参考如下:
# coding=utf-8 --指定了文件内容使用的字符编码格式,告知Python解释器如何解读文件中的文本内容。 from login_object import LoginPage from selenium import webdriver import time import unittest def login(driver,username,password): #组装登录函数,基本按操作流程 login_page=LoginPage(driver) login_page.open() login_page.enter_username(username) login_page.enter_password(password) login_page.submit() #使用unittest的框架,每个案例的标准形式 class LoginTest(unittest.TestCase): def setUp(self): self.driver=webdriver.Chrome("C:\\Users\\dewi\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe") print("登录测试开始") #输入正确的密码登录成功测试 def test_login_Y(self): username = "standard_user" password = "secret_sauce" print("登录的用户名是:%s,密码是:%s"%(username,password)) driver=self.driver login(driver,username,password) #调用登录函数 time.sleep(3) #加入断言 //*[@id="header_container"]/div[1]/div[2]/div # 验证有显示:Products UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail") def tearDown(self): #浏览器退出 self.driver.quit() print("登录测试结束")
3、添加执行函数
参考代码如下 ,生成HTML报告并且发邮件
# coding=utf-8 import unittest from HTMLTestRunner import HTMLTestRunner #导入 HTMLTestRunner 类 import time import smtplib import os from email.mime.text import MIMEText from email.header import Header #定义发送邮件的函数 def send_report_by_mail(file_name): f=open(file_name,'rb') #打开文件 report_body=f.read() f.close() msg=MIMEText(report_body,'html','utf-8') #内容 msg['Subject']= Header('Swag Labs 网站测试报','utf-8') smtp = smtplib.SMTP() smtp.connect('smtp.163.com') #发送邮箱服务器 smtp.login('登录用户名@163.com','登录密码') smtp.sendmail('发送邮箱@163.com','接收邮箱@163.com',msg.as_string()) smtp.quit() print("报告已通过邮件发送") #定义测试用例集的目录 test_dir = './' report_dir = './report' #测试报告地址 discover = unittest.defaultTestLoader.discover(test_dir,pattern="test_*.py")#所有要执行的文件 if __name__ == '__main__': now = time.strftime("%Y-%m-%d %H_%M_%S") #当前时间,格式是年月日时分秒 file_name = report_dir+ '/' + now + 'result.html' #报告名称,加上当前时间避免重复 fp = open(file_name,'wb') #打开报告文件,读写权限 runner = HTMLTestRunner(stream=fp,title="Swag Labs 网站测试报告",description="用例测试情况:")#HTML报告设置 runner.run(discover) #执行测试案例 fp.close() #关闭报告文件 send_report_by_mail(file_name) #发送报告
如上执行查看结果:
今天就先学习到这里吧。后面我们不断优化。
每天进步一点点,加油!