python UI自动化测试
为了减小维护成本:
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自动化测试的更多相关文章
- Python UI自动化测试实操
本UI 自动化框架主要的实验的目的是:完成了登录页面的自动化登录与打开会员中心的页面这一自动化的过程. 废话不多说,直接上代码截图: 我们首先来看看整个工程的目录结构,这样以便于了解项目的调用关系: ...
- 关于去哪儿网的UI自动化测试脚本(Python实现)
UI自动化测试Qunar机票搜索场景访问Qunar机票首页http://flight.qunar.com,选择“单程”,输入出发.到达城市,选择today+7日后的日期,点“搜索”,跳转到机票单程搜索 ...
- Python+appium+unittest UI自动化测试
什么是UI自动化 自动化分层 单元自动化测试,指对软件中最小可测试单元进行检查和验证,一般需要借助单元测试框架,如java的JUnit,python的unittest等 接口自动化测试,主要检查验证模 ...
- UI自动化测试框架(项目实战)python、Selenium(日志、邮件、pageobject)
其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的:所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架. 项目的地址:https://githu ...
- appium+python 【Mac】UI自动化测试封装框架流程简介 <一>
为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...
- 【python+selenium自动化】图像识别技术在UI自动化测试中的实际运用
引言: 目前在图像识别方面的自动化测试框架有很多,其中比较有名的是airtest,主要做手机端的游戏自动化测试(http://airtest.netease.com/) 因为没有实际把airtest运 ...
- 使用WatiN进行UI自动化测试
Watin是一个UI自动化测试工具,支持ie/firefox,官方网站:http://watin.org/. 主要有以下特点: 支持主要的html元素,见:http://watin.org/docum ...
- 如何正确选择UI自动化测试
近年流行一个词-UI,和UI搭边好像都那么高大上,软件测试行业也不例外,比如UI自动化测试. 常见的UI自动化测试程序有哪些呢? l 带UI的Unit Test,比如mock掉底层代码,仅仅测试UI ...
- Selenide UI 自动化测试
我没有拼写错误,确实不是 Selenium ,但是,只要是 Web UI 自动化测试框架,基本上都是基于Selenium 的.Selenide 也不例外.那为啥不直接用Selenium呢? 因为 ...
随机推荐
- python与c语言交互应用实例
1.python向c语言写数据 1) 先将接收端编译成一个共享链接库gcc/arm-linux-gnueabihf-gcc -o bluetooth_proxy.so -shared -fPIC bl ...
- karma安装
Last login: Sat Jun :: on ttys000 ➜ ~ cd /Users/wangyizhe/Projects/work/smartcmp/services/new-yacmp/ ...
- 转Hibernate 一对多关联的CRUD__@ManyToOne(cascade=(CascadeType.ALL))
一:Group和Users两个类 假定一个组里有n多用户,但是一个用户只对应一个用户组. 1.所以Group对于Users是“一对多”的关联关系@OneToMany Users对于Group是“多对一 ...
- SQL Server 2008 sa用户可以登录,Windows身份验证无法登录
安装SQL Server 2008时一切正常,但是在启动时出现了问题.若使用SQL Server 身份验证,选择sa用户可以登录到系统,并正常使用.但是,若使用Windows身份验证,提示用户名或密码 ...
- [Windows Powershell]-学习笔记(6)
Powershell环境变量 传统的控制台一般没有象Powershell这么高级的变量系统.它们都是依赖于机器本身的环境变量,进行操作 .环境变量对于powershell显得很重要,因为它涵盖了许多操 ...
- lower_bound()函数,upper_bound()函数
1.查找:STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search .这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两 ...
- Maven的plugins、pluginManagement和dependencies、dependencyManagement
plugins和dependencies下边配的都是真实使用的. pluginManagement和dependencyManagement下边配的都只是做声明的,一般配置在顶级pom中. 参考链接: ...
- [Python]返回函数,装饰器拾遗
def lazy_print(*args): def pr(): print(args) return pr 当我们调用lazy_print()时,返回的并不是求和结果,而是求和函数: >> ...
- Python中正则模块re.compile、re.match及re.search函数用法
import rehelp(re.compile)'''输出结果为:Help on function compile in module re: compile(pattern, flags=0) C ...
- Zabbix 关联onealert实现电话报警
Zabbix 关联onealert实现电话报警 系统环境:Linux Centos 7.4 应用版本:Zabbix 3.0.22 OneAlert官方地址:http://www.onealert.co ...