为了减小维护成本:

  1.UI自动化测试需要有较为稳定的环境

  2.代码设计合理,那么我们就需要面向对象的设计一个框架,将重复的代码模块化

一、首先总结一下 UI自动化大概要哪些模块

  1.config(配置文件):用来存放配置文件(YML,XML,HTML。。。)

  2.data(数据文件):存放测试数据等

  3.drivers(驱动):Chromedriver,IEdriver

  4.log(日志文件):打印测试log

  5.report(报告):生成HTML测试报告

  6.test(测试用例):写TestCase调用其他模块中的方法

  7.utils(公共方法):写调用config、data、log、report等其他模块的方法

  8.后续可自己增加其他模块,比如针对某类型元素的获取,page中元素的定位等

二、结合起来运用

  首先如果我们没有框架的话, 写一个testcase可以直接写到一个class中,甚至不用class,甚至连def都可以不用就实现了一个case;

但是,万一下次又用到了同样的功能,需要写同样的内容怎么办呢???甚至它和之前的case只有一点点不一样的话呢???我们需要不断的复制粘贴并且修改;

那么我们这里需要用到class来实现不同模块之间的调用

  1、我们需要在utils方法中写入一些基本方法,实现对其他模块的调用

  1)、file_reader.py(读取文件):我们上面描述的框架中包含了config中的YML文件(或者其他)、data中的Excel文件,

config---YML:

 import os

 class YamlReader(object):
def __init__(self,yaml):
#有yaml文件就返回文件,没有就报异常
if os.path.exists(yaml):
self.yaml = yaml
else:
raise FileNotFoundError("yaml文件不存在!")
self._data = None @property #这里需要了解yaml返回的内容格式等信息
def data(self): #调用yaml文件中的内容data
if not self._data:
with open(self.yaml,'rb') as f:
self._data = list(yaml.safe_load_all(f))
return self._data

data--Excel:

 import os
import xlrd class ExcelReader(object):
#title_line =True 判断是否有标题,为True时有标题
def __init__(self,excel,sheet=0,title_line=True):
if os.path.exists(excel):
self.excel = excel
else:
raise FileNotFoundError("Excel文件不存在!") self.sheet = sheet
self.title_line = title_line
self._data = list() @property
def data(self):
if not self.data:
workbook = open_workbook(self.excel)
#获取sheet
if type(self.sheet) not in [int,str]:
raise SheetTypeError('Please pass in <type int> or <type str> not {}'.format(type(self.sheet)))
elif type(self.sheet)==int:
sheet = workbook.sheet_by_index(self.sheet)
elif type(self.sheet)==str:
sheet = workbook.sheet_by_name(self.sheet) if self.title_line: #获取data值,有title为dict,没有title为list
title = sheet.row_value() #第一行定义为title
for col in range(1,sheet.nrows):
self._data.append(dict(zip(title,sheet.row_values(col))))
else:
for col in range(0,sheet.nrows):
self._data.append(sheet.row_values(col))
return self._data

未完待续。。。。。

python UI自动化测试的更多相关文章

  1. Python UI自动化测试实操

    本UI 自动化框架主要的实验的目的是:完成了登录页面的自动化登录与打开会员中心的页面这一自动化的过程. 废话不多说,直接上代码截图: 我们首先来看看整个工程的目录结构,这样以便于了解项目的调用关系: ...

  2. 关于去哪儿网的UI自动化测试脚本(Python实现)

    UI自动化测试Qunar机票搜索场景访问Qunar机票首页http://flight.qunar.com,选择“单程”,输入出发.到达城市,选择today+7日后的日期,点“搜索”,跳转到机票单程搜索 ...

  3. Python+appium+unittest UI自动化测试

    什么是UI自动化 自动化分层 单元自动化测试,指对软件中最小可测试单元进行检查和验证,一般需要借助单元测试框架,如java的JUnit,python的unittest等 接口自动化测试,主要检查验证模 ...

  4. UI自动化测试框架(项目实战)python、Selenium(日志、邮件、pageobject)

    其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的:所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架. 项目的地址:https://githu ...

  5. appium+python 【Mac】UI自动化测试封装框架流程简介 <一>

    为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...

  6. 【python+selenium自动化】图像识别技术在UI自动化测试中的实际运用

    引言: 目前在图像识别方面的自动化测试框架有很多,其中比较有名的是airtest,主要做手机端的游戏自动化测试(http://airtest.netease.com/) 因为没有实际把airtest运 ...

  7. 使用WatiN进行UI自动化测试

    Watin是一个UI自动化测试工具,支持ie/firefox,官方网站:http://watin.org/. 主要有以下特点: 支持主要的html元素,见:http://watin.org/docum ...

  8. 如何正确选择UI自动化测试

    近年流行一个词-UI,和UI搭边好像都那么高大上,软件测试行业也不例外,比如UI自动化测试. 常见的UI自动化测试程序有哪些呢? l  带UI的Unit Test,比如mock掉底层代码,仅仅测试UI ...

  9. Selenide UI 自动化测试

       我没有拼写错误,确实不是 Selenium ,但是,只要是 Web UI 自动化测试框架,基本上都是基于Selenium 的.Selenide 也不例外.那为啥不直接用Selenium呢? 因为 ...

随机推荐

  1. flatpickr功能强大的日期时间选择器插件

    flatpickr日期时间选择器支持移动手机,提供多种内置的主题效果,并且提供对中文的支持.它的特点还有: 使用SVG作为界面的图标. 兼容jQuery. 支持对各种日期格式的解析. 轻量级,高性能, ...

  2. Linux服务器access_log日志分析及配置详解(一)

    nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 error log 则是记录服务器错误日 ...

  3. python .bat

    传值给.bat os.system('%s %s %s %s %s' % ('image_dispose.bat', change_photo,dic['width'], '-resize', cha ...

  4. java实现FTP下载文件

    ftp上传下载文件,是遵照ftp协议上传下载文件的,本例仅以下载文件为例. 重要的方法解释: 1.FTP功能相关依赖路径:org.apache.commons.net.ftp.*: 2.ftp默认端口 ...

  5. PKU 2531 Network Saboteur(dfs+剪枝||随机化算法)

    题目大意:原题链接 给定n个节点,任意两个节点之间有权值,把这n个节点分成A,B两个集合,使得A集合中的每一节点与B集合中的每一节点两两结合(即有|A|*|B|种结合方式)权值之和最大. 标记:A集合 ...

  6. Tomcat内部结构及请求原理(转)

    Tomcat Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat的 ...

  7. Linux_Vi_命令

    Linux Vi 命令 ************************************************************************* 在vi中使用命令的方法是:冒 ...

  8. 【android】夜间模式简单实现

    完整代码,请参考我的博客园客户端,git地址:http://git.oschina.net/yso/CNBlogs 关于阅读类的app,有个夜间模式真是太重要了. 那么有两种方式可以实现夜间模式 1: ...

  9. JS 原生JS 判断滚动条滑动到底部(兼容苹果safari)

    ListenerScoller () { var pageIndex = 1; var startX, startY; document.addEventListener('touchstart',f ...

  10. Python数据可视化:网易云音乐歌单

    通过Python对网易云音乐华语歌单数据的获取,对华语歌单数据进行可视化分析. 可视化库不采用pyecharts,来点新东西. 使用matplotlib可视化库,利用这个底层库来进行可视化展示. 推荐 ...