设定项目文件大致结构

  1. atp/: 项目名

  2. conf/:存放配置文件

  3. data/:存放sql文件

  4. lib/: 存放项目的所有源代码。

  5. logs/:存放日志文件

  6. uploads/:存放下载的文件

  7. start.py: 程序启动脚本

  8. readme.txt: 项目说明文件。

  9. 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.提高效率,单线程和多线程

最新文章

  1. 提交留言HTML模板代码
  2. Android中如何控制元素的显示隐藏?
  3. 十个最适合 Web 和 APP 开发的 NodeJS 框架
  4. 基于HT for Web矢量实现2D叶轮旋转
  5. openssl,db,mysql,sasl编译安装
  6. CSS3弹性伸缩布局(一)——box布局
  7. MTD NANDFLASH驱动相关知识介绍
  8. iOS 如何进行逆向工程
  9. MYSQL 巧用count,sum进行统计数据
  10. java 之 建造者模式(大话设计模式)
  11. getDimension与getDimensionPixelOffset与getDimensionPixelSize的区别
  12. cesium相机绕点飞行
  13. 一个JAVA程序员成长之路分享
  14. Mysql 5.7.21 单机多实例安装
  15. centos 6.5内核编译步骤及配置详解
  16. java this的用法
  17. shell环境变量
  18. roadhog resolve alias 绝对路径 别名使用
  19. python爬虫(三)
  20. Breadth-first Search-690. Employee Importance

热门文章

  1. 日志添加request-id
  2. MySQL-SQL语句查询关键字
  3. 线程基础知识05 synchronized类锁和对象锁演示
  4. Seal 0.4 发布:软件供应链安全洞察更上一层楼!
  5. 学习Java Day13
  6. Vue组件之间的通信方式都有哪些?
  7. FAS2720 配置
  8. Openfoam Pstream类探索
  9. JZOJ 【2021.11.10NOIP提高组联考】
  10. CCRD_TOC_2007年10月_总第11期