Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件

1、UI测试框架搭建-目录结构

2、 文件介绍

2.1、baseinfo->__init__.py

配置文件定义基础参数

#-*-coding:utf-8-*-
#测试用例配置参数

base_url = "http://xxxxx.com"
undirect_username = "username"
undirect_password = "password"
direct_username = "username"
direct_password = "password"

buyerName = ‘username‘
buyerPassword = ‘password‘

sellerName = ‘username‘
sellerPassword = ‘password‘

#发送邮件配置参数
Smtp_Server = ‘smtp.xxxx.com‘
Smtp_Sender = ‘[email protected]‘
Smtp_Sender_Password = ‘Password‘
#Smtp_Receiver = [‘[email protected]‘,‘[email protected]‘,‘[email protected]‘,‘[email protected]‘]
Smtp_Receiver = [‘[email protected]‘]
Smtp_Receiver_pre = [‘[email protected]‘]

#测试邮箱配置
#Smtp_Server = ‘smtp.163.com‘
#Smtp_Sender = ‘[email protected]‘
#Smtp_Sender_Password = ‘Password‘
#Smtp_Receiver = [‘[email protected]‘]
#Smtp_Receiver_pre = [‘[email protected]‘]

#测试用例及报告路径配置参数
# case_dir = ‘./test_case‘
# test_report = ‘./test_report/‘

#测试用例及报告路径配置参数
test_dir = ‘D:\\WorkSpace\\Python\\UiTest\\test_case‘
test_report = ‘D:\\WorkSpace\\Python\\UiTest\\test_report\\‘

2.2、caseData

用于存放测试数据,这里用于存放文件上传功能中的上传的文件。

2.3、test_case

用于存放测试用例,根据下图定义的pattern的值,所以用例必须以test开头

2.4、test_report

用户存放测试报告文件

报告内容如下

2.5、测试执行程序

编写用例执行程序 runtest.py

# -*-coding:utf-8-*-
# Time:2017/7/1-0:18
# Author:YangYangJun
import sys

reload(sys)
sys.setdefaultencoding(‘utf8‘)
import smtplib
import unittest
import time
import os
from HTMLTestRunner import HTMLTestRunner
from email.header import Header
from email.mime.text import MIMEText
import baseinfo
from email.mime.multipart import MIMEMultipart

from selenium import webdriver

def get_NewReport(testreport):
    #获取testreport 目录下的文件返回一个list
    dirs = os.listdir(testreport)
    #对文件list 进行排序 进行增序排列
    dirs.sort()
    #获取序列最后一个元素,即最大的一个元素。
    newreportname = dirs[-1]
    print(‘The new report name: {0}‘.format(newreportname))
    file_new = os.path.join(testreport, newreportname)
    print file_new
    return file_new
def get_Result(filename):
    driver = webdriver.Firefox()
    driver.maximize_window()
    ##得到测试报告路径
    result_url = "file://%s" % filename
    driver.get(result_url)
    time.sleep(5)

    result = driver.find_element_by_xpath("html/body/div[1]/p[3]").text

    result = result.split(‘:‘)
    print  result
    driver.quit()
    return  result[-1]

def send_Mail(file_new,result):
    f = open(file_new, ‘rb‘)
    # 读取测试报告正文
    mail_body = f.read()
    f.close()
    try:
        smtp = smtplib.SMTP(baseinfo.Smtp_Server, 25)
        sender = baseinfo.Smtp_Sender
        password = baseinfo.Smtp_Sender_Password
        receiver = baseinfo.Smtp_Receiver
        smtp.login(sender, password)
        msg = MIMEMultipart()
        # 编写html类型的邮件正文,MIMEtext()用于定义邮件正文
        # 发送正文
        text = MIMEText(mail_body, ‘html‘, ‘utf-8‘)
        # 定义邮件正文标题
        text[‘Subject‘] = Header(‘XXXXUI自动化测试报告‘, ‘utf-8‘)
        msg.attach(text)
        # 发送附件
        # Header()用于定义邮件主题,主题加上时间,是为了防止主题重复,主题重复,发送太过频繁,邮件会发送不出去。
        msg[‘Subject‘] = Header(‘[执行结果:‘ + result + ‘]‘+ ‘XXXXUI自动化测试报告‘ + now, ‘utf-8‘)
        msg_file = MIMEText(mail_body, ‘html‘, ‘utf-8‘)
        msg_file[‘Content-Type‘] = ‘application/octet-stream‘
        msg_file["Content-Disposition"] = ‘attachment; filename="TestReport.html"‘
        msg.attach(msg_file)
        # 定义发件人,如果不写,发件人为空
        msg[‘From‘] = sender
        # 定义收件人,如果不写,收件人为空
        msg[‘To‘] = ",".join(receiver)
        tmp = smtp.sendmail(sender, receiver, msg.as_string())
        print tmp
        smtp.quit()
        return True
    except smtplib.SMTPException as e:
        print(str(e))
        return False

if __name__ == ‘__main__‘:
    # test_dir = os.path.join(os.getcwd(),‘test_case‘)
    # print(test_dir)
    # report_dir = os.path.join(os.getcwd(),‘test_report‘)
    # 测试用例路径
    test_dir = baseinfo.test_dir
    # est_dir = os.path.join(os.getcwd(),‘test_case‘)

    # print(test_dir)
    # report_dir = os.path.join(os.getcwd(),‘test_report‘)
    # 测试报告存放路径
    report_dir = baseinfo.test_report

    test_discover = unittest.defaultTestLoader.discover(test_dir, pattern=‘test*.py‘)
    now = time.strftime("%Y-%m-%d-%H_%M_%S")
    filename = report_dir + ‘result-‘ + now + ‘.html‘
    print filename
    fp = open(filename, ‘wb‘)
    runner = HTMLTestRunner(stream=fp, title=‘XXXXUI自动化测试报告‘, description=‘用例执行情况‘)
    runner.run(test_discover)
    fp.close()
    #其实根本不需要这里获取最新报告,filename就是最新的报告了,可以直接使用了
    #new_report = get_NewReport(report_dir)
    result = get_Result(filename)

    mail = send_Mail(filename,result)

    print mail
    if mail:
        print(u"邮件发送成功!")
    else:
        print(u"邮件发送失败!")
时间: 2024-12-25 17:08:33

Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件的相关文章

python+selenium+unittest测试框架4-邮件发送最新测试报告

邮件发送最新测试报告 示例: import HTMLTestRunner import unittest import os import time import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def allcase(): '''加载测试用例''' discover = unittest.defaultTestLoader.discover(c

最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件

今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写测试用例即可,其他模板可以套用的,希望帮助到大家. 目录 一.编写测试用例 二.执行测试用例,查找最新测试用例,自动发送测试报告 三.定时执行测试用例 3.1方案一:Windows任务计划 3.2方案二:Jenkins持续集成 四.成果验收 环境准备: 操作系统:Windows7 集成开发环境:ec

ant+jmeter+jenkins 发送测试报告邮件

二.部署配置 2.1 jmeter 2.1.1 jar包二次开发: 将jmeter目录D:\apache-jmeter-5.0\extras中的ant-jmeter-1.1.1.jar包进行反编译.添加2个测试类 MailTask和JavaMail.具体代码参考文件中的java文件.然后进行编译生成新的jar包ant-jmeter-1.1.2-SNAPSHOT.jar. 2.1.2 添加build文件和测试文件 在jmeter目录D:\apache-jmeter-5.0\test下新增文件bui

Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告

一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/TesterlifeRaymond/BeautifulReport,其中 BeautifulReport.py和其template是我们需要的关键. 二.BeautifulReport 如下代码是BeautifulReport.py的源码,其中几个注释的地方需要注意,将其集成进自己的自动化框架时需要做相应的

python搭配selenium,htmltestrunner实现自动化测试 —— (测试思路和基础步骤)

1. 测试思路: 编写测试单例 编写测试套件,集合测试单例 集中测试测试套件 生成测试报告 补充,发送测试结果到E-mail 2. 示例 编写测试单例 编写测试套件 测试脚本程序 生成报告 发送邮件 ? 原文地址:https://www.cnblogs.com/yqmcu/p/10129838.html

python+selenium+unittest测试框架3-项目构建和发送邮件

项目构建和发送邮件 一.项目构建 1.建立项目chen 打开pycharm左上角File>New Project,在Location输入testing项目所在文件夹D:\chen,创建后选择Opin in current window. 2.创建子文件夹 PS:创建文件夹,一定要选Python Package的方式创建. 3.创建测试脚本 4.创建runalltest.py PS:在runalltest.py这个脚本里面写主函数,控制执行所有的用例. 5.下载生成测试报告的源码 import H

Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件

一下代码是自己结合教材,并结合以往用到的实例编写的代码,可以做为参考 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from HTMLTestRunner import HTMLTestRunner from email.header import Header import unittest import time,os #==========

Python+Selenium ----unittest单元测试框架

unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做"PyUnit",是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java还有一个很好用的单元测试框架叫TestNG,本系列只学习Python,所以只需要unittest是Python里的一个单元测试框架就可以了.       unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是test,也就是一个测试用例.要了解

Python+selenium+unittest的GUI自动化框架实现

框架设计说明图: 框架实现前的准备工作: 1.Python版本为2.7.11的Windows下的安装. 2.命令行下的selenium最新版本(编者使用版本为2.53.0,可兼容最新火狐.IE.chrome等浏览器版本)pip安装. 3.版本为Version: Mars.1 Release (4.5.1)的eclipse安装(编者Python开发使用工具),jdk1.7. 4.eclipse下Python开发插件PyDev 4.5.1(高版本不一定兼容当前eclipse版本与Java版本,高版本