基于excel的自动化框架
设定项目文件大致结构
atp/
: 项目名conf/:存放配置文件
data/:存放sql文件
lib/
: 存放项目的所有源代码。logs/:存放日志文件
uploads/:存放下载的文件
start.py
: 程序启动脚本readme.txt
: 项目说明文件。- case/:存放用例表
理清思路
基本思想与原则A:
数据很多,就放到一个列表或字典里;
用for语句,处理一条数据即可。
基本思想与原则B:
考虑是否传参,如何传参。
一般把要处理的对象作为参数传入。
1.有多个用例表,取所有的表到一个大列表d_all_excel中。for循环,处理一个表abs_excel先。
d_all_excel = glob.glob(os.path.join(case_path,'*.xls'))
2..一个表中有多条用例,取表中的用例到一个大列表中all_cases中.
(表的读写)
# all_cases = [[url,method,data:dict,check],[url,method,data:dict,check],...] ;
book = xlrd.open_workbook(abs_excel)
sheet = book.sheet_by_index(0)
for case in range(1,nrows):all_cases.append(sheet.row_values(i)[4:8])
3.用例数据处理:for循环,处理一条用例case先。
case作为参数入参。case = [url,method,data:dict,check]
序列解包;
url需要拼接为完整的接口地址: url = urljoin(server_url,url)
难点:data不仅要参数化: for p,func in func_map.items(): if p in data: data.replace(p,func())
func_map = {
'<phone>': f.phone_number, #生成电话的
'<ssn>': f.ssn,
'<email>': f.email,
'<name>': f.name,
'<username>': f.user_name,
'<bank_no>': f.credit_card_number,
'<password>': f.password,
'<addr>': f.address
} #这儿的f是faker.Faker()
data还要取成字典:
4.访问接口,拿到返回数据response和res_reason, satate('成功,失败')。
分get和post,需要传参url,data,header. 后俩个不是必传参数,可以默认为None;
没返回数据时,拿不到json, 处理下异常;
5.难点:校验返回的数据和预期结果。 检查点 如 erron = 2001
根据预测数据检查点的key,来获取实际返回数据的rea_value;
(jsonpath模糊匹配)
[key,seq,value]
code = '%s %s %s'%(self.convert_type(real_value),seq,self.convert_type(value)) #生成比较实际结果和语气结果的代码
status = eval(code) #用eval来执行生成代码,获取到执行的结果
将预测数据检查点的value,用其运算符,与rea_value比较。所有检查点都True即成功。
注意:nt和float不能比较。字符不加引号,就是变量,变量不能比较。try except
6.将校验结果写入表中。
列表数据写入表格;
表格存放到data里,避免与case混一起。
7.将表通过邮件发送。
处理下异常,网不好等很容易失败
8.串通好流程。
9.提高效率,单线程和多线程
基于excel的自动化框架的更多相关文章
- 3分钟手把手带你搭建基于selenium的自动化框架
1 .什么是seleniumSelenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Sel ...
- python+requests+excel 接口自动化框架
一.项目框架如图: 1.common :这个包都是一些公共的方法,如:手机号加解密,get/post接口请求的方法封装,接口鉴权,发邮件,读写excel文件方法等等 2.result:存放每次运行的l ...
- 【基于Puppeteer前端自动化框架】【二】PO模式,断言(如何更简便逻辑的写测试代码)
一.概要 前面介绍了Puppeteer+jest+TypeScript做UI自动化,但是这知识基础的,我们实现自动化要考虑的很多,比如PO模式,比如配置文件,比如断言等等.下面就来一一实现我是怎么用p ...
- 【基于PUPPETEER前端自动化框架】【一】TypeScript+Puppeteer+Jest 整合
前提:掌握Jest + Puppeteer 1.Jest环境配置 2.Jest-MATCHERS匹配器 3.Jest-全局变量设置 4.Puppeteer安装 5.Puppeteer元素获取 6.Pu ...
- ShutIt:一个基于 Python 的 shell 自动化框架
ShutIt是一个易于使用的基于shell的自动化框架.它对基于python的expect库(pexpect)进行了包装.你可以把它看作是“没有痛点的expect”.它可以通过pip进行安装. Hel ...
- 自动化框架Quantum Automation Framework+cucumber+perfecto
名词解释 Quantum: 一款基于JAVA的自动化框架,支持手机和桌面WEB的自动化测试.与cucumber和perfecto实现了整合,用于BDD自动化. Refer: http://projec ...
- 接口自动化---简单的数据驱动框架ATP(基于excel)
数据驱动测试:根据数据进行测试.将用例写入excel文件,用代码读取文件中的数据,从而实现自动化测试. 自动化框架实现步骤: 1.获取用例 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 ...
- 基于excel的接口自动化测试框架:支持参数化、关联等
1. 框架结构说明 2. 框架代码实现 action 包 case_action.py business_process 包 main_process.py util 包 global_var.py ...
- 基于Selenium的web自动化框架
转自 : https://www.cnblogs.com/AlwinXu/p/5836709.html 1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台. ...
- 基于Selenium的Web自动化框架增强篇
在写完上一篇“基于Selenium的Web自动化框架”(http://www.cnblogs.com/AlwinXu/p/5836709.html)之后一直没有时间重新审视该框架,正好趁着给同事分享的 ...
随机推荐
- 带你动手做AI版的垃圾分类
摘要:本案例将使用YOLOX模型,实现一个简单的垃圾分类应用. 本文分享自华为云社区<ModelBox社区案例 - 使用YOLOX做垃圾分类>,作者:HWCloudAI. 1 ModelB ...
- C#汉字转拼音(Microsoft.PinYinConverter)
1. NuGet程序包 Microsoft.PinYinConverter 2. 使用方法 var chineseChar = new ChineseChar('中'); var pyStr = ch ...
- Vue的基础-属性
VUE vue-cli脚手架,vue-router路由 vuex做状态管理 vue ui 界面 1.下载node.js 2.下载vue-cli cnpm install vue-cli -g 查看模版 ...
- [Ynoi2016] 掉进兔子洞
\(\text{Solution}\) 莫队配合 \(\text{bitset}\) 发现答案困难的部分在于同一个数在三个区间出现次数的最小值 考虑强行拆开看,用莫队处理出每个区间每个数的出现次数,这 ...
- 【SDOI2015】星际战争
#include<cstdio> #include<queue> using namespace std; const int M = 10000; const double ...
- JZOJ 3184. 【GDOI2013模拟7】最大异或和
最大异或和 可持久化字典树经典题 题目网上自己找 来波模板 \(Code\) #include<cstdio> #include<iostream> using namespa ...
- NSDT可编程3D场景
推荐:将 NSDT场景编辑器 加入你的3D开发工具链. NSDT编辑器简化了WebGL 3D应用的开发,完全兼容Three.JS生态.本文介绍如何在自己的应用中嵌入使用NSDT编辑器搭建的3D场景,并 ...
- 07#Web 实战:仿 GitHub 个人主页项目拖拽排序
实现效果图 GitHub 和 Gitee 个人主页中可以对自己的项目进行拖拽排序,于是我就想自己实现一个.本随笔只是记录一下大概的实现思路,如果感兴趣的小伙伴可以通过代码和本随笔的说明去理解实现过程. ...
- 通过反射机制简化 JDBC ResultSet 实体类的注入
提出问题 查询完某个表之后,一般都是把结果的每一个字段注入到一个实体类中.比如,数据库 users 表,查询出来的结果注入到 User 实体类中. 通过 while 遍历 ResultSet,把字段对 ...
- OpenLayers点聚合
1. 引言 当页面加载的数据量过大时,拖拽.缩放时往往会产生卡顿 然而,页面实现的内容是有限的,人眼可见范围也是有限的,过于微小的部分是可以不予显示的 聚合是解决这种问题的一个办法,当数据比较多,单个 ...