最近博主完成了一个web端UI自动化平台测试环境搭建,包括常用的操作流程组合成方法,组织测试用例,利用框架及报告文件生成,最后通过邮件添加附件的格式发送。

首先UI自动化平台的核心是selenium+python、里面一些元素定位的操作博主也就不做介绍了,有很多大神都有详细的文档来辅助、博主这里想总结的是如何通过模块的方式来写通用的方法来简化测试工作。

就拿最简单的登录注册页面来举例,可能需要设计的用例:不存在的用户名、正确的用户名加错误的密码、正确的用户名加空密码、正确的用户名加正确的密码。 博主这里就简单的列一些常用的用例(别吐槽用例覆盖不全),

然后来通过 selenium的 定位API来写用例代码,每一个用例都包括:进入登录页、用户名的操作、密码的操作、确认登录,博主想说的就是类似这样同一个页面、不同的操作可以通过定义方法的形式来整合代码,

把相应元素但不同操作用定义的变量来区别。

下面是一个类似的例子:

 # ERP自动化登录接口
@classmethod
def erp_login(cls, username, password):
driver = cls.driver
driver.find_element_by_id("btn-front").click() # 登录名称
driver.find_element_by_id("DloginName").send_keys(username)
# 登录密码
driver.find_element_by_id("Dpassword").send_keys(password) driver.find_element_by_id("Flogin").click()

同样比如一个表单新增功能,涉及的字段多了,同样可以通过定义方法来整合,如此可以大大优化代码,否则相似的用例会出现大量重复的操作步骤代码,而且随着方法的不断增加,测试用例也变成不同方法的组合

例如:

 # ERP自动化前台测试用例
def test_case_1(self):
u"""菜肴条件:时价主菜称重备注(535465);单独下单"""
TestErp.erp_login(self, "237nj03", "")
TestErp.erp_front(self)
TestErp.erp_front_open_dish_Desk(self, "")
TestErp.erp_front_dish_pwfb(self, "", "1.5", "", "")
TestErp.erp_front_dish_order(self)
TestErp.erp_front_account_clearDesk(self, "")

这是一个用例集,是在单元测试框架unittest里的,之前博主也介绍过,博主负责的项目是一个智能餐饮系统

TestErp.erp_login 这个是登录的方法

TestErp.erp_front 这个是进入前台的方法

TestErp.erp_front_open_dish_Desk 这个是餐饮系统中选择变量(desk_id)来开台

TestErp.erp_front_dish_pwfb 这个是选择其中一种菜肴信息,输入 price 价格、weight 称重、 配菜信息

TestErp.erp_front_dish_order 这个是下单操作

TestErp.erp_front_account_clearDesk 这个是进入结账页、选择现金结账打印并清台

之后就是通过构建用例集来执行用例,并发送邮件

 #!/usr/bin/env python
# -*- coding: utf-8 -*- from unittest_erp import TestErp
import HTMLTestRunner
import unittest
from datetime import datetime
from time import sleep
from unittest_smtp import unittest_smtp # 定义测试报告的文件名称
reportname = datetime.today().strftime("%Y%m%d%H%M%S") + ".html"
# 定义测试任务集
testreport = unittest.TestSuite() # 给测试任务集添加测试用例任务的名称
testreport.addTest(TestErp("test_case_1"))
testreport.addTest(TestErp("test_case_2"))
testreport.addTest(TestErp("test_case_3"))
testreport.addTest(TestErp("test_case_4"))
testreport.addTest(TestErp("test_case_5"))
testreport.addTest(TestErp("test_case_6"))
testreport.addTest(TestErp("test_case_7"))
testreport.addTest(TestErp("test_case_8"))
testreport.addTest(TestErp("test_case_9"))
testreport.addTest(TestErp("test_case_10"))
testreport.addTest(TestErp("test_case_11"))
testreport.addTest(TestErp("test_case_12"))
testreport.addTest(TestErp("test_case_13"))
testreport.addTest(TestErp("test_case_14"))
testreport.addTest(TestErp("test_case_15"))
testreport.addTest(TestErp("test_case_16")) # 定义测试报告的文件路径
file_path = "D:\\pythonproject\\Wito_erp\\wito_selenium\\" + reportname
fp = file(file_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title=u"测试报告",
description=u"用例执行情况:"
)
# 执行测试任务集
runner.run(testreport) fp.close() # 关闭文件 # 根据文件路径、定义附件名称发送邮件
unittest_smtp(file_path, reportname)
 #!/usr/bin/env python
# -*- coding: utf_8 -*- from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.utils import parseaddr, formataddr
import smtplib def _format_address(text):
name, address = parseaddr(text)
return formataddr((Header(name, "utf-8").encode(), address)) def unittest_smtp(file, filename):
from_address = "xx@xx.com"
# 发件箱地址
password = "123456!a"
# 授权密码 不是邮箱登录密码
# to_address = "xx@xx.com"
to_address = "xx@xx.com"
# 收件箱地址
smtp_server = "smtp.ym.163.com"
# 发件箱服务器地址 # message = MIMEText(mail_msg, "html", "utf-8") message = MIMEMultipart()
# msg = MIMEText("测试smtp邮件发送功能", "plain", "utf-8")
# 第一个参数:邮件正文
# 第二个参数:邮件类型 纯文本
# 第三个参数:编码 message["From"] = _format_address("自动化测试报告 <%s>" % from_address)
# 发件人姓名与地址
message["To"] = _format_address("xx <%s>" % to_address)
# 收件人姓名与地址
message["Subject"] = Header("xx自动化测试平台邮箱服务", "utf-8").encode()
# 邮件标题
message.attach(MIMEText("xx自动化测试任务执行完毕,附测试报告文件", "plain", "utf-8"))
# 接收html格式文件 att1 = MIMEText(open(file, "rb").read(), "base64", "utf-8")
# 文件地址
att1["Content-Type"] = "application/octet-stream"
att1["Content-Disposition"] = "attachment; filename=%s" % filename
# 定义附件名称 message.attach(att1)
# 添加附件
try:
server = smtplib.SMTP(smtp_server, 25)
# 构造smtp服务器连接
server.set_debuglevel(1)
# 打开debug输出模式
server.login(from_address, password)
# 登录smtp服务器
server.sendmail(from_address, to_address, message.as_string())
# 发送邮件 print "邮件发送成功"
server.quit()
except smtplib.SMTPException:
print "Error: 无法发送邮件"

最后附上邮件图片

selenium项目总结(UI自动化测试平台搭建、测试报告生成、邮件转发)的更多相关文章

  1. 自动化测试 接口自动化及UI自动化测试平台设计演示

    接口自动化及UI自动化测试平台设计演示   by:授客  QQ:1033553122 欢迎加入全国软件测试交流qq群:7156436 大家好,我是授客. 本视频意在分享个人,基于Python,Djan ...

  2. Python+Selenium UI自动化测试环境搭建及使用

    一什么是Selenium ? Selenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下:开源.免费:多平台.浏览器.多语言支持:对web页面有良好的支持:AP ...

  3. django+appium实现UI自动化测试平台---构思版

             背景 UI自动化,在进行的过程中,难免会遇到平台化, 在实际的工作中,有的领导也会想要实现自动化测试的平台化.自动化平台化后,有了更为实际的成果, 在做UI自动化,很想吧现在的自动化 ...

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

    1.UI测试框架搭建-目录结构 2. 文件介绍 2.1.baseinfo->__init__.py 配置文件定义基础参数 #-*-coding:utf-8-*- #测试用例配置参数 base_u ...

  5. Jmeter+ant+jenkins接口自动化测试 平台搭建(一)

    平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成.Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可 ...

  6. Android Espresso(UI自动化测试)的搭建

    Espresso是Google官方提供的Android UI自动化测试的框架. 为什么叫Espresso(浓咖啡),好像是想让Android码农们轻松的写完自动化用例后能享受着咖啡,看着自动化测试&q ...

  7. 三、自动化测试平台搭建-django-如何用mysql数据库做web项目

    从这节开始到后面说的大概内容如下: 这里说的是Django做一个web项目的大概框架,从下篇具体说Django中的模型(查询..),视图(请求,响应,cookie,session..),模板(验证码, ...

  8. HttpRunnerManager 接口自动化测试平台 搭建实践

    一.需要准备的知识点 1. linux: 安装 python3.nginx 安装和配置.mysql 安装和配置 2. python: django 配置.uwsgi 配置 二.我搭建的环境 1. Ce ...

  9. Jmeter+ant+jenkins接口自动化测试 平台搭建(三)

    四.报告优化 Jmeter 默认生成报告不是很详细,因此我们需要进行优化.这里我们使用新的报告模板:默认的报告模板是 jmeter-results-detail-report_21.xsl 先上效果图 ...

随机推荐

  1. Angular学习(6)- 数组双向梆定+filter+directive

    示例: <!DOCTYPE html> <html ng-app="MyApp"> <head> <title>Study 6< ...

  2. 06socket编程

    socket可以看成是用户进程与内核网络协议栈的编程接口. socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. IPv4套接口地址结构通常也称为“网际套接字地址结构”,它 ...

  3. 【linux】常见的网络管理命令

    last:查看目前和过去的用户登录信息 [root@paulinux ~]# last root pts/0 192.168.1.106 Fri Jun 10 09:53 still logged i ...

  4. 【linux】之虚拟机的使用

    VMware常用的配置 1.虚拟机快照设置 2.虚拟机克隆 分为链接克隆和完整克隆 链接克隆不占用过大的资源,但是主机删除之后,克隆机无法正常使用 完整克隆,占用空间资源,和主机之间互不影响 一般常用 ...

  5. [Java Web – Maven – 1A]maven 3.3.3 for windows 配置(转)

    1.环境 系统环境:windows 2008 R2 JDK VERSION: 1.7.0_10 2.下载地址 MAVEN 下载地址:http://maven.apache.org/download.c ...

  6. BIP_开发案例03_将原有Report Builer报表全部转为XML Publisher形式(案例)

    2014-05-31 Created By BaoXinjian

  7. GDI+ 中发生一般性错误。

    GDI+ 中发生一般性错误. “/wechat”应用程序中的服务器错误. GDI+ 中发生一般性错误. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及 ...

  8. Yii 发送电子邮件

    yii 收发邮件 ------------------------------------------------------------------------------------------- ...

  9. NPM使用

    安装路径修改: 4.配置npm的全局模块存放路径和cache路径 输入以下命令 npm config set prefix  “D:\Program Files\node\node-global” n ...

  10. Java SE 第九讲---面向对象特征之封装1

    1.面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism) 2.封装:类包含数据与方法,将数据与方法放在一个类中就构成了封 ...