Selenium + Python 自动化测试21(PO+HTML+Mail)

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了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)   #发送报告

如上执行查看结果:

今天就先学习到这里吧。后面我们不断优化。

每天进步一点点,加油!

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立黄昏粥可温

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值