整理了一些软件测试方面的资料、面试资料(接口自动化、web自动化、app自动化、性能安全、测试开发等),有需要的小伙伴可以文末加入我的学习交流qun,无套路自行领取~

如果有100个测试用例,重复的去写,如果验证的较多参数,这种情况下该如何做?copy后期会很大,管理很困难

1.根据case设计接口自动化框架

根据项目业务接口来编写一个excel

case编号 作用 是否执行 前置条件 url method data cookie操作 预期结果方式 预期结果
caichen_001 获取广告位 yes api3/getbanneradvertver2 post {"username":"111111"} yes mec
caichen_002 测试 yes caichen_001 api3/beta4 post {"username":"111112"} no errorcode 1006
caichen_003 新课程 yes api3/newcourseskill post {"username":"111113"} write json
caichen_004 评价 yes api3/getdownrecommend post {"username":"111114"} no json
caichen_005 课程信息 yes api3/getcourseintro post {"username":"111115"} no json
caichen_006 播放列表 yes api3/getmedialist post {"username":"111116"} no json
caichen_007 课程列表 yes api3/courselistinfo post {"username":"111117"} no json

2.对excel操作进行封装

  • 安装库pip install openpyxl
#handle_cookie.py
import openpyxl
from openpyxl import workbook
import sys
from collections.abc import Iterable
import os
base_path = os.getcwd()
sys.path.append(base_path)class HandExcel:def load_excel(self):'''加载excel'''open_excel = openpyxl.load_workbook(base_path+"/Case/caichen.xlsx")return open_exceldef get_sheet_data(self,index=None):'''加载所有sheet的内容'''sheet_name = self.load_excel().sheetnamesif index == None:index = 0data = self.load_excel()[sheet_name[index]]return datadef get_cell_value(self,row,cols):'''获取某一个单元格内容'''data = self.get_sheet_data().cell(row=row,column=cols).valuereturn datadef get_rows(self):'''获取行数'''row = self.get_sheet_data().max_rowreturn rowdef get_rows_value(self,row):'''获取某一行的内容'''row_list = []for i in self.get_sheet_data()[row]:row_list.append(i.value)return row_listdef excel_write_data(self,row,cols,value):'''写入数据'''wb = self.load_excel()wr = wb.activewr.cell(row,cols,value)wb.save(base_path+"/Case/caichen.xlsx")def get_columns_value(self,key=None):'''获取某一列得数据'''columns_list = []if key==None:key = 'A'columns_list_data = self.get_sheet_data()[key]for i in columns_list_data:columns_list.append(i.value)return columns_listdef get_rows_number(self,case_id):'''获取行号'''num = 1cols_data = self.get_columns_value()for col_data in cols_data:if case_id == col_data:return numnum = num+1return numdef get_excel_data(self):'''获取excel里面所有的数据'''data_list = []for i in range(self.get_rows()):data_list.append(self.get_rows_value(i+2))return data_listexcel_data = HandExcel()if __name__ == "__main__":handle = HandExcel()##print(handle.get_rows_number('caichen_001'))print(handle.get_excel_data())
复制代码

3.模型搭建

#coding=utf-8
import sys
import os
base_path = os.getcwd()
sys.path.append(base_path)
from collections.abc import Iterable
from Util.handle_excel import excel_data
import json
from Util.handle_header import get_header
from Util.handle_result import handle_result,handle_result_json,get_result_json
from Util.handle_cookie import write_cookie,get_cookie_value
from Util.codition_data import get_data
from Base.base_request import request
#['caichen_001', '登陆', 'yes', None, 'login', 'post', '{"username":"111111"}', 'yes', 'message', None]
class RunMain:def run_case(self):"""获取所有行数"""rows = excel_data.get_rows()for i in range(rows):cookie=Noneget_cookie = Noneheader = Nonedepend_data = Nonedata = excel_data.get_rows_value(i+2)is_run = data[2]if is_run == 'yes':is_depend = data[3]data1 = json.loads(data[7])if is_depend:'''获取依赖数据'''depend_key = data[4]depend_data = get_data(is_depend)#print(depend_data)data1[depend_key] = depend_datamethod = data[6]url = data[5]is_header = data[9]excepect_method = data[10]excepect_result = data[11]cookie_method = data[8]if cookie_method == 'yes':cookie = get_cookie_value('app')if cookie_method == 'write':'''必须是获取到cookie'''get_cookie={"is_cookie":"app"}if is_header == 'yes':header = get_header()res = request.run_main(method,url,data1,cookie,get_cookie,header)#print(res)code = str(res['errorCode'])message = res['errorDesc']if excepect_method == 'mec': config_message = handle_result(url,code)if message == config_message:excel_data.excel_write_data(i+2,13,"通过")else:excel_data.excel_write_data(i+2,13,"失败")excel_data.excel_write_data(i+2,14,json.dumps(res))if excepect_method == 'errorcode':if excepect_result == code:excel_data.excel_write_data(i+2,14,"通过")else:excel_data.excel_write_data(i+2,13,"失败")excel_data.excel_write_data(i+2,14,json.dumps(res))if excepect_method == 'json':if code == 1000:status_str='sucess'else:status_str='error'excepect_result = get_result_json(url,status_str)result = handle_result_json(res,excepect_result)if result:excel_data.excel_write_data(i+2,13,"通过")else:excel_data.excel_write_data(i+2,13,"失败")excel_data.excel_write_data(i+2,14,json.dumps(res))   if __name__ == "__main__":run = RunMain()run.run_case()复制代码

4.获取配置信息

  • 新建server.ini配置信息
[server]
host=http://www.caichen.com/
username=Wangcaichen
password=阿GG
is_run=3
复制代码
  • 安装库 pip install configparser读取配置文件
#coding=utf-8
import sys
import os
import configparser
base_path = os.getcwd()
sys.path.append(base_path)
class HandleInit:def load_ini(self):file_path = base_path+"/Config/server.ini"cf = configparser.ConfigParser()cf.read(file_path,encoding="utf-8-sig")return cfdef get_value(self,key,node=None):'''获取ini里面的value'''if node == None:node = 'server'cf = self.load_ini()try:data = cf.get(node,key)except Exception:print("没有获取到值")data = Nonereturn datahandle_ini = HandleInit()
if __name__ == "__main__":hi = HandleInit()print(hi.get_value("password"))
复制代码

5.项目通过配置文件获取host

# base_request.py
import sys
import os
import configparser
base_path = os.getcwd()
sys.path.append(base_path)
import requests
import json
from Util.handle_cookie import write_cookie
from Util.handle_json import get_value
from Util.handle_init import handle_iniclass BaseRequest:def send_post(self,url,data,cookie=None,get_cookie=None,header=None):'''发送post请求'''response = requests.post(url=url,data=data,cookies=cookie,headers=header)if get_cookie !=None:'''{"is_cookie":"app"}'''cookie_value_jar =  response.cookiescookie_value = requests.utils.dict_from_cookiejar(cookie_value_jar)write_cookie(cookie_value,get_cookie['is_cookie'])res = response.textreturn resdef send_get(self,url,data,cookie=None,get_cookie=None,header=None):'''发视get请求'''response = requests.get(url=url,params=data,cookies=cookie,headers=header)if get_cookie !=None:cookie_value_jar = response.cookiecookie_value = requests.utils.dict_from_cookiejar(cookie_value_jar)write_cookie(cookie_value,get_cookie['is_cookie'])res = response.textreturn resdef run_main(self,method,url,data,cookie=None,get_cookie=None,header=None):'''执行方法,传递method、url、data参数'''#return get_value(url)base_url = handle_ini.get_value('host')if 'http' not in url:url = base_url+urlif method == 'get':res = self.send_get(url,data,cookie,get_cookie,header)else:res = self.send_post(url,data,cookie,get_cookie,header)try:res = json.loads(res)except:print("这个结果是一个text")print("--->",res)return resrequest = BaseRequest()
if __name__ == "__main__":request = BaseRequest() request.run_main('get','http://www.baidu.com/login',"{'username':'11111'}")
复制代码

好了各位,以上就是这篇文章的全部内容了,能看到这里人啊,都是人才。

如果这个文章写得还不错,觉得我有点东西的话 求点赞

【30天学会接口自动化测试】接口自动化测试之框架设计(五)相关推荐

  1. 接口自动化测试之框架模型搭建

    一.前言 小伙伴们大家好呀,今天笔者给大家带来了一篇关于python接口自动化测试的文章,这篇文章主要讲解Python接口自动化测试框架模型的搭建,主要介绍如何设计框架,以及基础的框架运行等,话不多说 ...

  2. 【python+pytest】接口自动化测试—接口基础篇

    目录 前言 接口定义 接口分类 常见接口 测试分层 测试左移和右移 写在最后,给与的建议: 前言 就当前软件测试招聘的市场需求以及趋势而言,接口测试是测试人员必须掌握的技能,而接口自动化测试则是加薪利 ...

  3. 【Python自动化测试26】接口自动化测试实战六_pytest框架+allure讲解

    文章目录 一.前言 二.pytest讲解 2.1 什么是pytest? 2.2 为什么使用pytest? 2.3 使用pytest 2.4 pytest的运行方式 2.5 pytest高级特性 2.5 ...

  4. 接口自动化测试-接口封装思想

    目录 一.接口测试封装思想 二.测试框架 三.架构管理 一.接口测试封装思想 配置--根据配置文件获取初始配置和依赖 接口封装--1.封装接口调动进行抽象封装 --2.类似PageObject效果 业 ...

  5. 自动化测试之-测试用例设计方法总结

    黑盒.白盒.接口测试一系列用例设计方法. 黑盒测试用例设计方法包括等价类划分法.边界值分析法.错误推测法.因果图法.判定表驱动法.正交试验设计法.功能图法.场景图法等. (一)等价类划分法 定义:等价 ...

  6. DevOps平台中的自动化部署框架设计

    本文目录: 一.背景 二.我们的需求是什么? 三.概念澄清 四.概念模型 五.总体设计 六.关键点设计 七.总结 一.背景 说到自动化部署,大家肯定都会想到一些配置管理工具,像ansible,chef ...

  7. 自动化测试基础篇--Selenium框架设计(POM)

    一.自动化测试框架 感谢木棉花的漂泊分享,内容转自链接:http://www.cnblogs.com/fengyiru6369/p/8053035.html 1.什么是自动化测试框架 简单来说,自动化 ...

  8. 【Web UI自动化测试】Web UI自动化测试之框架篇(全网最全)

    本文大纲截图: UnitTest框架: PyTest框架: 框架: 框架英文单词 framework,为解决一类事情的功能的集合.需要按照框架的规定(套路)去书写代码. 一.UnitTest框架介绍[ ...

  9. unittest测试框架_python接口自动化测试 - 4.unittest单元测试框架学习

    简介 unittest就是python的一个单元测试框架,unittest非常适合做自动化测试. 官方源码栗子: import unittestclass IntegerArithmeticTestC ...

最新文章

  1. LuoGuP4721:【模板】分治 FFT
  2. 编码注释coding: utf-8
  3. [NOIp2017] 时间复杂度
  4. 使用yarn创建react项目报node_modules\core-js-pure: Command failed错误
  5. 海康ehome协议分析(1):前言
  6. Mirth Connect 源码用eclipse启动
  7. 您可能是盗版软件的受害者——解决办法
  8. 十分详细的阳光十六法则 (转)
  9. could和may区别请求_can和may的区别及用法
  10. GPGPU实时光线刻蚀模拟
  11. NOIP 2012 Senior 2 - 国王游戏
  12. android java开发
  13. RET RETF IRET IRETD 指令的不同
  14. C语言,练习8.9 n*n阶矩阵对角线元素之和
  15. 网络编程“惊群“问题
  16. VMware设置任务栏图标显示与隐藏
  17. java二次开发微信公众号授权
  18. Fitnesse初体验(介绍、下载、安装)
  19. C/C++申请空间与释放空间的两种方法
  20. AI平台、AI中台架构

热门文章

  1. rollup使用笔记
  2. MES管理信息系统源码 MES源码
  3. 关于我年久失修的C++的康复记录4
  4. 青铜5:一探究竟-从synchronized理解对象头中的锁
  5. el-table插入备注效果
  6. 什么是高质量的赞美呢?
  7. 无人驾驶汽车到底意味着什么
  8. python解析json文件并进行坐标查询
  9. 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读
  10. 体验云计算的成果----亚马逊免费云计算服务