为了减小维护成本:

  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. 批处理delims分割时遇到的问题。。

    今天写了个将文件每行按逗号分割并取第六行的批处理.但是结果不对.看图一目了然. for 循环的/f 后面的参数是这样的 然后文件的内容是这样的 亮点是倒数第二行..其实6才是第六列的值.其他行第六列都 ...

  2. 关于手机适配中的rem的学习随笔

    githup 下载地址 :https://github.com/comjustforfun/remformobile adaptivejs利用rem解决移动端页面开发的自适应问题 页面模板初始化的时候 ...

  3. Delphi APP 開發入門(八)SQLite資料庫

    Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次 ...

  4. maven工具使用之常用maven命令(二)

    1.创建java web项目: # mvn archetype:generate -DgroupId=com.igoodful.sdxs      -DartifactId=hubu  -Darche ...

  5. 伪类 :after 清除浮动的原理和方法

    浮动元素容器的clearing问题1. 问题的由来有这样一种情形:在一个容器(container)中,有两个浮动的子元素.<div>        <div style=" ...

  6. Java RSA公钥加密,私钥解密算法的尝试

    https://www.cnblogs.com/liemng/p/6699257.html 写这篇博客其实是有点意外的,来源最初也算是入职当前这家公司算吧,由于项目要求数据几乎都进行了加密(政府项目么 ...

  7. 服务器抓包命令:tcpdump详解

    官网地址:http://www.tcpdump.org/tcpdump_man.html 简介: tcpdump,就是:dump the traffic on a network,根据使用者的定义对网 ...

  8. SQL统计信息解释

    [SQL基础]统计信息解释 在平时优化SQL的时候,最长用的就是:SET STATISTICS ON,它可以用来查看我们写的查询语句到底性能如何,不过,究竟这个性能的指标是怎么样的呢?首先需要明白的, ...

  9. Centos 7 关闭邮件服务及禁用IPv6

    关闭邮件服务(禁用25端口) sudo systemctl stop dovecot sudo systemctl stop postfix sudo systemctl disable doveco ...

  10. 超详细 Spring @RequestMapping 注解使用技巧 (转)

    @RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一.这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上. 在这篇文章中,你将会看到 @R ...