(原创)Python 自动化测试框架详解
自己折腾了一个python的自动化测试框架,梳理了一下流程,简单分享一下。
项目背景
B/S架构,进行用户界面的自动化测试
工具选择
python开发的自动化测试框架,足够灵活,可以随时根据需求进行变更,易于维护
框架思路(unittest)
采用数据驱动的设计,将数据分层出来,与业务逻辑剥离,测试人员专注测试用例,不用关注代码,提高了测试效率
测试框架介绍
测试工程的结构如下:

Data目录

存放涉及业务的资源,例如上传图片场景的图片资源
Driver目录

存放浏览器驱动文件
Excel目录

存放测试用例(重要)
4个sheet分页,如下:
PageElements分页 –存储页面元素的关键字定位信息

TestConfig 分页 --配置信息

TestSuite 分页 --测试用例标题

TestSteps 分页 --测试用例的执行步骤

Package目录

封装的方法简介
assertUtil.py --断言
assert_equal """预期结果和实际结果 相等"""
assert_prompt """页面提示信息"""
…
base.py --涉及系统的信息(暂时不用)
base_get_hostname """获取本机电脑名"""
base_get_ip """获取本机ip"""
…
browserUtil.py --浏览器的操作
browser_title """获取当前浏览器标题"""
browser_url """获取当前浏览器URL"""
…
excelUtil.py --excel文件的操作
excel_open """打开excel文件(xls)"""
excel_sheet """指定sheet页面"""
excel_cell_data """获取指定单元格内容"""
…
keysUtil.py --键盘操作
location.py --封装页面元素定位
login.py --登录业务
objectMap.py --关键字映射
ob_key_input """根据关键字input执行页面元素查找"""
ob_key_click """根据关键字click执行页面元素查找"""
…
util.py --通用场景
ut_highlighted """元素高亮"""
…
Picture 目录

存放用例执行的报告
Test_case 目录

存放测试用例执行脚本
Config.py
存储常量、配置信息之类的信息
PageElements.py

存储页面元素信息
例如登录页面的3个控件:

"登录-输入用户名" --表示用户名输入框
"input>css>input[placeholder='请输入账号']"
Input –定义的关键字
Css –元素定位方式
input[placeholder='请输入账号'] --元素定位表达式
测试用例执行的流程图:
步骤1:
执行TestCase_UI.py脚本,用例启动

步骤2:
读取excel目录下测试用例(*.xls)
TestConfig分页:

获取浏览器启动类型 --启动相应浏览器
获取URL地址 --打开URL地址
步骤3:
读取TestSuite分页:
逐行读取测试用例执行标识,标识为“yes”表示执行该条用例,为“no”跳过该用例

获取“测试用例序号”
步骤4:
读取TestSteps分页:
按照“测试用例序号”读取测试用例执行步骤

例如VDT_WDGZT_001用例,存在4个步骤,逐行读取“测试步骤描述”
步骤5:
读取PageElements分页:
按照“测试步骤描述”读取关键字、页面定位元素、页面元素定位表达式

按照关键字、页面定位元素、页面元素定位表达式 定位到页面元素执行相应操作
例如如下3个步骤:
在输入框中输入“搜索资源”

单击搜索按钮

执行检查点操作

注意:
每个步骤执行完毕,根据执行的情况在测试用例中回写“测试结果”
例如“我的工作台”步骤执行成功,在TestSuite分页,“测试结果”填写“用例步骤执行成功”

相应的在TestSteps分页,测试用例1,的“测试结果”填写“用例执行成功”

如果用例步骤执行失败
例如“公共-登录用户名称检查” 步骤执行失败,在TestSuite分页,“测试结果”填写“用例步骤执行失败”,“页面截图”填写失败截图的路径

相应的在TestSteps分页,测试用例1,的“测试结果”填写“用例执行失败”

测试用例步骤出现失败的情况,则不再执行该用例的剩下的步骤,开始执行下一个测试用例
步骤6:
一条测试用例执行完毕,重复执行步骤3、4、5,直至全部测试用例执行完毕
步骤7:
用例执行完毕,输出测试报告,报告详情:

测试用例执行日志
例如在测试用例中勾选2个用例执行,执行日志如下:

(原创)Python 自动化测试框架详解的更多相关文章
- (转)python WSGI框架详解
原文:https://www.cnblogs.com/shijingjing07/p/6407723.html?utm_source=itdadao&utm_medium=referral h ...
- python flask框架详解
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...
- python WSGI框架详解
1.web应用的本质1)浏览器发送一个HTTP请求2)服务器收到请求,生成一个HTML文档3)服务器把HTML文档作为HTTP响应的body发个浏览器4)浏览器收到HTTP响应,从HTTP Body取 ...
- Python开发技术详解PDF
Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
- mapreduce框架详解
hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...
- python协程详解,gevent asyncio
python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...
- python之struct详解
python之struct详解 2018-05-23 18:20:29 醉小义 阅读数 20115更多 分类专栏: python 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
随机推荐
- 使用 Gradle 编译 Java 项目时报错: Could not find Tools.jar
在使用Android studio进行编译成jar的时候,遇到Gradle 编译错误,听前辈们说是jdk的版本不对,于是乎就更新了一下jdk, 然而可能是我重新安装jdk的时候改变了安装路径, 在pr ...
- STM32F0的flash读写
flash大小64k Rom+8k Ram的大小,stm32f051有64k Rom,总的分为 64页,一页1024byte ,在flash的Rom里面写数据掉电保存,相当于W25q80 uint32 ...
- git的使用及常用命令
一,GIT是什么? git是目前世界上最先进的分布式版本控制系统 Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在 ...
- JavaWeb的国际化(17/4/8)
国际化的缺点: 因为文字不同,所以带来的排版问题一样严重,通常都是重新在写一个网站反而更加清晰,快捷 1:需要从浏览器中获取到浏览器语言(Accept-Language) 2:利用locale获取 ...
- 简单XSS跨站脚本攻击实验
原理:恶意Web用户将代码植入到提供给其它用户使用的页面中,如果程序没有经过过滤或者过滤敏感字符不严密就直接输出或者写入数据库.合法用户在访问这些页面的时候,程序将数据库里面的信息输出,这些恶意代码就 ...
- ubuntu实用命令--软件管理
近期重新拿起linux的书看了下,整理了一下linux的命令. ubuntu预装了APT和dpkg ,“APT”是 “Advanced Package Tool”的简写,“dpkg ”是“Debian ...
- STL容器之优先队列(转)
STL容器之优先队列 原地址:http://www.cnblogs.com/summerRQ/articles/2470130.html 优先级队列,以前刷题的时候用的比较熟,现在竟然我只能记得它的关 ...
- Windows上Ruby开发环境的配置
最近公司项目上有需要,需要开发一个puppet的自动化工具,这个工具需要操作存储设备上的各种资源,而鉴于puppet不是善于完成这个任务的首选语言,于是我们选择了puppet的“爹”,Ruby. 熟悉 ...
- Python常见的错误汇总
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 错误: [错误分析]第二个参数必须为类,否则会报TypeError,所以正确的应 ...
- java泛型探索——小特性
泛型特性(小篇幅) 1. 补充介绍一些常见的泛型特性: 类型参数T可以是recursive(类似递归性),它的边界可以是类型参数是自身的接口或类. 如我实现寻找最大值的方法,可以这么写: public ...