我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。
上一篇我们讨论了PO模式并举例说明了基本的思路,今天我们继续学习。
本篇文章我们综合一下之前学习的内容,如先将PO模式和我们生成HTML报告融合起来,综合的灵活的使用之前学习的内容。
整体的思路:编写基础类(page类)>登录页面的类(login 类)>通过unittest框架写测试用例>编写执行函数文件(包含生成HTML报告)
1、先列一下之前的脚本:
如下图第一部分基础页面类:
如下图第二部分登录页面类:
第三部分,如下图所示登录方法和执行的内容
2、引入unittest重写测试用例
参考如下:
# coding=utf-8 --指定了文件内容使用的字符编码格式,告知Python解释器如何解读文件中的文本内容。from login_object import LoginPagefrom selenium import webdriverimport timeimport unittestdef 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.driverlogin(driver,username,password) #调用登录函数time.sleep(3)#加入断言 //*[@id="header_container"]/div[1]/div[2]/div# 验证有显示:ProductsUIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').textself.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")def tearDown(self): #浏览器退出self.driver.quit()print("登录测试结束")
3、添加执行函数
参考代码如下 ,生成HTML报告并且发邮件
# coding=utf-8import unittestfrom HTMLTestRunner import HTMLTestRunner #导入 HTMLTestRunner 类import timeimport smtplibimport osfrom email.mime.text import MIMETextfrom 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) #发送报告
如上执行查看结果:
今天就先学习到这里吧。后面我们不断优化。
每天进步一点点,加油!