【史上最全】接口测试+接口自动化测试总结(三)


前言

1、自动化测试用例设计:代码好处理,接口来说需要

url、body、预期结果、请求方式、路径、接口名称、用例名称、模块、用例id、请求参数类型、请求参数)

代码构建请求可能用到的,自动化测试用例要让代码容易解读。

为什么需要用例名称:如果一个模块有很多接口,比如新增,列出,删除课程,一般按照顺序来测试

如果不按照顺序(有名称可以自动识别用例模块,那个接口的,接口用例写的时候打乱,有用例名称可以自己识别组装成列表)—一般接口用例按照模块顺序写,方便

2、前后端分离项目才好做接口测试,api接口交互来做的(接口返回对应数据json比较多)

前后端不分离发一个接口数据返回在html页面,数据很多,n个单词,不知道接口数据在哪里(可能在某个元素里面)做起来麻烦

接口自动化偏向前后端分离的项目(返回数据格式比较适合,html捞取数据很麻烦)

3、接口用例

最关键的用例多少个取决于请求body不同,请求body里有必填,可选填,每个参数有指定的类型和长度

比如:要求name必须中文的,必填参数,不能有非法字符,有位数,个数,长度,编码设置(int,字符串都有现在)等限制

我们做用例很多时候针对接口用例的数据一般写字典,方便(data和json都能传字典,不需要代码里再转换)

swager框架可以导出对应的接口文档,没有可以导出来–(如果什么都没有,自己写文档)

4、接口项目代码大概框架如下

在这里插入图片描述

teach_sq       # 项目名称,项目根目录
data        # 放接口测试用例数据(用例和配置分开,如果还要配置文件放个config包)
lib          # 放封装接口代码的(原代码),按照不同模块api,web的对应去封装
api_lib
lesson.py
login.py #(登录模块)
app_api
web_ui
report        # 测试报告文件夹
test_case       # 测试用例文件夹
tools         # tools:第三方封装工具代码  如加密或者算法模块
execlMethod.py  # excel用例表的读取和写入操作
get_MD5.py
conf      # 配置文件
config.py
log       # 日志模块

5、接口测试代码实战

1)tools文件夹源代码:封装第三方封装工具代码-如加密或者算法模块

import xlrd                 #读excel模块
from xlutils.copy import copy      #写excel(复制excel)
# import xlutils

#1:_读取excel的数据(简单的功能可以直接写函数就行,没必要写成类),
def get_excelData(sheetName,startRow,endRow,body=6,reps=8):
	'''
	读取excel表函数 ,读取多行的body和reps参数,返回列表套元组的数据[(),(),()]
	:param sheetName: 打开的表名
	:param startRow: 读取excel开始行
	:param endRow: 读取excel结束行
	:param body: 读取excel的哪一列,获取body传参
	:param reps: 读取excel的哪一列,获取预期响应数据
	:return:
	'''
	excelDir="../data/测试用例-v1.4.xls"
	workBook=xlrd.open_workbook(excelDir)                          #打开excel创建一个excel对象
	#sheets=workBook.sheet_names()                                #看有几个表

	#2取对应的表sheet来操作
	worksheet=workBook.sheet_by_name(sheetName)                  #取哪个表传表名sheetName就行

	#worksheet.row_values(0)                                        #这是读取一excel表的一整行的,返回一个列表
	#我们不需要读取一整行,只需要请求参数,和返回结果就行,读单元格

	#获取单元格(单元格怎么获取---表.单元对应的值(行,列))
	#return worksheet.cell(1,6).value   #2行7列获取的是请求的body  #.value代表单元格的值
	#return worksheet.cell(1,8).value   #2行9列获取的是预期的返回结果
	#print(worksheet.nrows)   #获取行数,获取所有的行(如果用例一个模块很多接口写在excel里面,新增课程,删除课程,各种用例在一起
		#这种获取所有行不可行 )
	#所以读取excel用例可以考虑传参,开始多少行和结束多少行
	reslist=[]
	for one in range(startRow-1,endRow):    
		#获取每个单元格
		reslist.append((worksheet.cell(one,body).value,worksheet.cell(one,reps).value))
	return reslist


#2:写入数据(现在没有用框架,把结果写在excel表里面)
def set_excelData(sheetIndex,startRow,endRow,colNum,inData,excelOutDir="../report/res.xls"):  #inData传列表或者元组可迭代数据,写很多数据
	excelDir="../data/松勤-教管系统接口测试用例-v1.4.xls"
	workBook=xlrd.open_workbook(excelDir,formatting_info=True)  #打开excel创建一个excel对象
																#formatting_info=True,保证excel格式一致(不破坏原表格式)
																#格式也复制过去(不破坏原表格式)
	newWorkBook=copy(workBook)                     #把打开的excel复制一个全新的workBook对象 (有的只写不读,有的只读不写),另存其他文件这么写
	newWorksheet=newWorkBook.get_sheet(sheetIndex)        #newWorksheet全新的excel文件表对象,
														  #newWorkBook.get_sheet(sheetIndex)获取对应的编号(第一个表)
														  #获取全新的workbook对象的需要写结果的表对象(表名:sheetIndex传参)

	idx=0
	for one in range(startRow - 1, endRow):   #如果写数据不是从2行开始,从10行开始,range(10,12),indata[one]会越界
		newWorksheet.write(one,colNum,inData[idx])   #写单元格,表里面的write写,write(行,列,数据)
		idx=idx+1
	newWorkBook.save(excelOutDir)  #保存路径(保存对象)

if __name__ == '__main__':
	print(get_excelData('1-登录接口', 2, 5))
	set_excelData('1-登录接口', 2, 5, 9, (1,2,3,4))
import hashlib            # 这是加密库


def get_md5_data(psw):        # 自己MD5加密--password  String md5(‘zr’+111111 +‘hg’)
	password = f"zr{psw}hg"
	# 1:首先创建一个md5对象
	md5 = hashlib.md5()
	# 2:完成加密,updata方法加密
	md5.update(password.encode("utf-8"))  # 对象.方法(需要加密的对象.encode("utf-8"))----加密时候最好设置编码
	# 对字符串进行编码后再进行一个加密
	# md5(b"zr111111hg")  #也可以传二进制数据直接进行编码:如下
	# import hashlib
	# md5 = hashlib.md5()
	# md5.update(b'zr11111111hg')
	# print(md5.hexdigest())

	# 方法二:一行也可以写
	# print(hashlib.md5(b'zr11111111hg')).hexdigest()---这样写也可以,(传bytes类型。可以这么写)

	# 3要输出结果,return
	return md5.hexdigest()

2)lib源代码文件夹

import requests
import json
from config import HOST
import json
from tools.get_MD5 import get_md5_data        #加密函数

class Login:
	def login(self,inData,inFlage=True):       #登录方法,实例方法
		url = f"{HOST}/api/mgr/loginReq"
		header = {"Content-Typ": "application/x-www-form-urlencoded"}
		payload = json.loads(inData)                               #多这步转换,万一inData需要转换,转成字符串还是什么
		reps = requests.post(url, data=payload, headers=header)
		reps.encoding = 'unicode_escape'
		if inFlage ==True:               #为true默认返回cookie的,这个登录的接口会作为后续接口的前置条件,需要返回cookie
			return reps.cookies["sessionid"]
		elif inFlage==False:             #本身登录接口需要调用校验是否成功
			return reps.json()

if __name__ == '__main__':
	login1=Login()
	print(login1.login('{"username": "auto", "password": "sdfsdfsdf"}', False))            
		#现在调用函数需要传字符串,因为里面有payload = json.loads(inData)         
			# indata只能传字符串,里面再转成字典

3)test_case  现在还没有使用到pytest框架,直接把执行的结构写到excel文件夹里

#自动化执行excel表用例

#1:先获取对应的用例数据
import json
from tools.execlMethod import get_excelData,set_excelData
from lib.api_lib.login import Login
testData=get_excelData('1-登录接口', 4, 5)

# 2:数据请求获取对应的数据(跑数据)
reslist=[]
for line in testData:
	#3构建登录请求
	res =Login().login(line[0],inFlage=False)

	#4:判断实际结果和预期结果 if
	if res['retcode']==json.loads(line[1])['retcode']:
		res="pass"
	else:
		res = "fail"
	reslist.append(res)
#3:写数据到excel
set_excelData('1-登录接口',4,5,9,reslist)

6、接口api编写心得

编写某个模块的源代码的时候,需要考虑这个模块有没有前置条件,
一个模块最好编写一个类函数,看这个类函数里面所有的接口函数特点(模块里面所有接口url是不是一样的,(可以创建课程对象的时候就创建出来,定义成实例对象)

sessionid值,cookie需要sessionid封装—每个接口都需要sessionid(创建课程实例也可以传sessionid封装好一个cookie))

7、面试自动化做到什么程度

1)规范流程

所有得代码传git——>git提交后通过ginkins去触发,自动化角度(脚本去触发,项目版本发布触发自动化脚本执行))

需要搭建服务器(搭建持续集成服务器,cicd),所有的代码环境都在服务器里面

开发角度:版本迭代发布到git进行jinkins自动打包,触发自动化执行
自动化人员角度:通过git传自动化脚本,触发对应场景触发自动化脚本执行

版本变化+脚本变化(都能触发自动化脚本执行)

2)本机跑项目(没有上jinkins持续集成的线路)

代码跑完了生成报告后发邮件(代码仅一个人有)
线上  线下

8、http和web socket

有些接口不一定有requset库,用socket去发的,socket会话,通信(人工智能,物联网,通信比较多,实时性强)

最全Python自动化测试进阶之路视频教学 (全集)

下面是我整理的2025年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最珍贵的不是最终抵达的终点,而是沿途突破自我的每个瞬间。当你觉得撑不住时,请记住:蝴蝶破茧时的挣扎,正是它获得飞翔力量的关键。你的坚持,正在为生命谱写最动人的乐章!

别被暂时的风雨模糊了视线!那些看似坎坷的路途,都在引领你走向更美的风景。当别人选择放弃时,你的坚持就是最有力的宣言。向前奔跑吧,整个世界都在期待你的光芒绽放!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值