为了减小维护成本:

  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. SIP UserAgent (B2BUA client)——pjsip

    SIP UserAgent常用的SIP协议栈有pjsip/bell-sip/sofia-sip/libeXosip/libre等 https://github.com/staskobzar/sip_s ...

  2. macOS 上安装 PECL

    一.简介 PECL(The PHP Extension Community Library)是 PHP 扩展的存储库,为 PHP 所有的扩展提供提供托管和下载服务. 通过 PEAR(PHP Exten ...

  3. 模块讲解----os

    os:跟操作系统相关的信息 os模块的增删改查 一.cd进入: windowd: os.chdir("D:/软件/pychar/data/s13") print('获取当前位置:' ...

  4. linux rm指定的文件

    如何删除一个目录下的除了想要的文件之外的所有文件 rm `ls | grep -v "aa"` Linux下 报错“命令参数列表过长”,在用mv命令一次移动3万多个文件时失败了,原 ...

  5. k8s-离线安装coreos

    1.安装准备 下载iso 前往页面https://coreos.com/os/docs/latest/booting-with-iso.html 版本:stable 1465.7.0 日期:2017. ...

  6. vueRouter点击打开新页签

    一.vue 路由使用 vue是单页面SPA,一般我们使用vue-router 设定路由进行页面跳转的时候,都是直接覆盖当前页面.比如,在a页面中有如下超链接 <router-link to=&q ...

  7. windows 下安装 rabbitmq报init terminating in do_boot错误

    好长时间没有写东西了,记一个安装笔记吧. 目前市面上比较常用的几个消息中间件,rabbitmq算是风评比较好的,所以就拿来安装一下玩玩喽(很有可能也仅限于是安装一下....)安装过程不表,无非是下载E ...

  8. XDU 1001 又是苹果(状态压缩)

    #include<cstdio> #include<cstring> ; using namespace std; int r[maxn],c[maxn]; char pic[ ...

  9. Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B. Code For 1

    地址:http://codeforces.com/contest/768/problem/B 题目: B. Code For 1 time limit per test 2 seconds memor ...

  10. 关于iOS UIWebView 加载网页,点击网页内某些控件导致 Application 'UIKitApplication:xxx.xxx.xxx' was killed by jetsam.

    问题:公司用的腾讯问卷系统,内嵌在我们应用或游戏的自定义UIWebView里面展示,发现在iOS 10 以下系统,点击圆形勾选框 会大概率出现闪退. 通过联调发现:报了这样一个警告Applicatio ...