为了减小维护成本:

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:

1 importos2

3 classYamlReader(object):4 def __init__(self,yaml):5 #有yaml文件就返回文件,没有就报异常

6 ifos.path.exists(yaml):7 self.yaml =yaml8 else:9 raise FileNotFoundError("yaml文件不存在!")10 self._data =None11

12 @property #这里需要了解yaml返回的内容格式等信息

13 def data(self): #调用yaml文件中的内容data

14 if notself._data:15 with open(self.yaml,'rb') as f:16 self._data =list(yaml.safe_load_all(f))17 return self._data

data--Excel:

1 importos2 importxlrd3

4 classExcelReader(object):5 #title_line =True 判断是否有标题,为True时有标题

6 def __init__(self,excel,sheet=0,title_line=True):7 ifos.path.exists(excel):8 self.excel =excel9 else:10 raise FileNotFoundError("Excel文件不存在!")11

12 self.sheet =sheet13 self.title_line =title_line14 self._data =list()15

16 @property17 defdata(self):18 if notself.data:19 workbook =open_workbook(self.excel)20 #获取sheet

21 if type(self.sheet) not in[int,str]:22 raise SheetTypeError('Please pass in or not {}'.format(type(self.sheet)))23 elif type(self.sheet)==int:24 sheet =workbook.sheet_by_index(self.sheet)25 elif type(self.sheet)==str:26 sheet =workbook.sheet_by_name(self.sheet)27

28 if self.title_line: #获取data值,有title为dict,没有title为list

29 title = sheet.row_value() #第一行定义为title

30 for col in range(1,sheet.nrows):31 self._data.append(dict(zip(title,sheet.row_values(col))))32 else:33 for col inrange(0,sheet.nrows):34 self._data.append(sheet.row_values(col))35 return self._data

未完待续。。。。。

python ui自动化测试仪器_python UI自动化测试相关推荐

  1. python手机自动化截图_python UI自动化截图对比

    目前有个想法,就是将UI截图与自动化截图进行对比.不一致的情况下提示错误 截图对比方法有: import cv2 import numpy as np # 均值哈希算法 def aHash(img): ...

  2. python手机自动化截图_Python Appium自动化测试 屏幕截图

    Time will tell. 在实际自动化项目运行过程中,很多时候 App 可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏,从而达到一种 "有图 ...

  3. 用python做自动化测试仪器_使用python进行windows自动化测试(1)

    最近开始学习整理python在windows自动化测试中的使用,觉得挺有意思的 主要思路,在windows下,主要通过启进程,然后查找进程的句柄,然后再操作这个句柄,包括点击,填写文字,关闭,获取文字 ...

  4. python 网页自动化框架_python+selenium自动化框架

    项目以前的UI自动化大概是这样分层的 1.Common功能层:一些经常被调用的基本常用操作,用来完成某项具体的功能,与具体的业务无关.比如常用的封装: --将元素定位方法重新封装 --封装上下左右滑动 ...

  5. 【UI自动化-2】UI自动化元素定位专题

    前言 UI自动化的学习,个人认为应该分五步走:环境搭建.元素定位.特殊场景处理.框架设计与搭建.测试平台开发.第一步的环境搭建其实没什么难度,都是固定的套路.今天就来到了第二步的元素定位,可以说元素定 ...

  6. python接口自动化参数化_python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  7. python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)

    本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...

  8. 如何用python实现自动化办公_Python自动化办公都需要掌握什么知识?

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量处理 ...

  9. python自动化等待时间_python+appium 自动化测试 - 元素等待

    该篇文章主要用于整理的是在执行自动化测试过程中的几种元素等待方法 implicity_wait() sleep() wait_activity() 等待某元素出现后,再执行操作 WebDriverWa ...

最新文章

  1. python生成有条件的列表_python复杂列表生成式教程
  2. 关于开源精神和抄袭问题
  3. 常用模块和面向对象 类
  4. 【已解决】window10任务栏图标显示异常解决方法--有详细解释
  5. li浮动时ul自适应高度方法
  6. 第二次作业(个人项目实践)
  7. mongodb 事务_MongoDB4 事务 简单易懂的??
  8. springboot 中使用 Mybatis 注解 配置 详解
  9. 如何成为一名Web前端开发人员?入行学习完整指南
  10. 329.矩阵中的最长递增路径
  11. 2.7 if应用:猜拳游戏
  12. 音频处理之语音加速播放
  13. 《人工智能:一种现代的方法》读书笔记之 智能Agent
  14. es文件浏览器鸿蒙,达人教你玩应用:ES文件浏览器之文件互传(原创首发)
  15. Matlab中_pkg.exe,windows系统如何打开pkg|windows打开pkg文件包的方法
  16. canvas绘制动态图片
  17. 美化桌面软件测试面试题,软件测试面试题的经典逻辑题
  18. 当软件定义存储(SDS)遇见区块链(BlockChain)
  19. 3分钟了解入门「机器学习」该学习什么?(上)
  20. SpringCloud【框架】

热门文章

  1. [LibreOJ β Round #4] 子集
  2. DeepLearning - Forard Backward Propogation
  3. BZOJ4133 : Answer的排队
  4. python语言的模块化
  5. javascript必须懂之冒泡事件
  6. SharePoint 2013 入门教程--系列文章
  7. Qualitative and Quantitative
  8. 好男人是这样爱老婆的
  9. c# asp.net 2.0 tableadapter 动态 dynamic sql语句
  10. http.client.ResponseNotReady: Request-sent