基于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)之后一直没有时间重新审视该框架,正好趁着给同事分享的 ...
 
随机推荐
- LeetCode_387. 字符串中的第一个唯一字符
			
写在前面 原文地址:https://leetcode.cn/problems/first-unique-character-in-a-string/ 难度:简单 题目 给定一个字符串 s ,找到 它的 ...
 - Spring Boot启动时执行初始化操作三种方法分享
			
@PostConstruct对于注入到Spring容器中的类,在其成员函数前添加@PostConstruct注解,则在执行Spring beans初始化时,就会执行该函数.但由于该函数执行时,其他Sp ...
 - E - 树状数组 1【GDUT_22级寒假训练专题五】
			
E - 树状数组 1 原题链接 题意 已知一个数列,你需要进行下面两种操作: 将某一个数加上 \(x\) 求出某区间每一个数的和 lowbit函数 定义一个函数\(f=lowbit(x)\),这个函数 ...
 - pdf转MD、HTML、word网址收集
			
PDF 转 Word,Excel,PPT,JPG 的网址:https://smallpdf.com/cn/pdf-to-word PDF 转 Markdown 的网址:https://pdf2md.m ...
 - vant组件,picker时间选择,自定义时间选择,实现datePacker,时间选择长期,增加长期选项,用于选择身份证到期时间等...
			
vant组件,picker时间选择,自定义时间选择,实现datePacker,时间选择长期,增加长期选项,用于选择身份证到期时间等... 最近项目中有个需求,datePicker选项,需要实现增加一个 ...
 - odoo 给列表视图添加按钮实现数据文件导入
			
实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 模块文件组织结构 说明:为了更好的表达本文主题,一些和主题无关的文件.代码已略去 odoo14\cus ...
 - 触觉仿真系统:Force Dimension+CHAI 3D
			
推荐:将 NSDT场景编辑器 加入你的3D开发工具链 Force Dimension 成立于2001年,总部在瑞士,比sensable 晚了8年,开发的理念也不一样,他们开发是连杆式力反馈触觉系统,仿 ...
 - Nacos集群搭建(三个节点)
			
Nacos集群安装 一,在每台服务器上安装nacos 1,准备安装包  github下载点 2,在/usr/local/目录下创建一个文件夹用于上传和解压Nacos cd /usr/local/ # ...
 - 从Linux Bridge引发的网桥、交换机与路由器区别探究
			
背景 最近接触docker的网络配置方式,发现其默认会创建一个docker0的Linux Bridge,宿主机上运行的容器可以通过连接该birdge实现与外网的通信,根据bridge这个命名很自然的认 ...
 - CSS 数学函数与容器查询实现不定宽文本溢出跑马灯效果
			
在许久之前,曾经写过这样一篇文章 -- 不定宽溢出文本适配滚动.我们实现了这样一种效果: 文本内容不超过容器宽度,正常展示 文本内容超过容器的情况,内容可以进行跑马灯来回滚动展示 像是这样: 但是,之 ...