作者:ARUAN地盘_740 | 来源:互联网 | 2023-06-14 16:31
一.在我们没有学习过python语言的时候领导让我们做接口测试我们都使用工具来做测试,一般常用的如jemeter,postman这些个工具,我来推荐使用postman这个工具来进行接口测试,有的
一.在我们没有学习过python语言的时候领导让我们做接口测试 我们都使用工具来做测试,一般常用的如jemeter,postman这些个工具,我来推荐使用postman
这个工具来进行接口测试,有的小伙伴们说Fiddler抓接口,然后进行测试不也成吗?成是成,但是接口测试往往优先于客户端测试并且postman这个工具方便用来模拟异常请求,并且postman这个工具还带有验证功能,提高我们接口测试的效率
我们来用postman来进行一个简单的自动化
1.发送一个get请求
2.发送一个post请求
3.设置检查点,检验请求的返回值
验证包含哪些内容
4.自动运行请求的集合
设置循环次数与间隔时间
这就是postman给我们带来的好处,他可以收集所有接口请求,进行结果断言,在我们需要的时候他可以成批的进行运行。
但是postman的缺点也是十分明显的,他是一个固定的工具,只能满足一部分接口请求的要求,但是有很多接口的请求参数需求他就无法实现了,比如说在请求参数了需要时间戳,需要一个MD5加密的字段,需要从数据库里查询一个id键值,再比如说需要获取返回中的参数这些都无法实现,只能通过手动去获取,那这样自动化的意义也就不存在了,所以最靠谱的实现自动化还是需要使用python来开发一个脚本,按照接口文档的要求开发出相应的接口请求脚本。
二.当我们学习过python中的request模块我们可以发送接口请求,发送get,post,put,delete等请求,同时可以发送字典格式的,json格式的,发送文件等类型数据,也可以操作session,COOKIE,并对接口返回进行操作,如获取返回内容,并对返回内容格式化,获取返回的状态码,获取请求时间等功能呢。
下面 我们就用request的模块进行一个简单的接口测试
#导入requests模块
import requests
def test():
url='http://ios.wecash.net/biz/wallet/amount'
data='CUSTOMER_ID=56256A951F81F0BCA10780AD02139B29'
rep=requests.get(url=url,data=data).json()
print(rep)
errorDescription=rep['errorDescription']
if errorDescription == '查询成功':
print("红包查询接口测试通过")
else:
print("红包查询接口测试不通过")
test()
结果如下:
我们的入参需要一个时间戳并且需要一个数据库字段
#导入requests模块
import requests
import pymysql
import time
def test():
# 获取13位时间戳
millis = int(round(time.time() * 1000))
print("时间戳:%s"%millis)
# 创建连接
cOnn= pymysql.connect(host='localhost', port=3306, user='root', passwd='root123', db='autotest',charset='utf8')
# 创建游标
cursor = conn.cursor()
# 执行SQL,并返回受影响行数
cursor.execute("select * from autotest_input ")
# 获取第一行数据
row_1 = cursor.fetchone()
print(row_1)
# 提交,不然无法保存新建或者修改的数据
conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
url = 'http://ios.wecash.net/biz/wallet/amount'
data = 'CUSTOMER_ID=56256A951F81F0BCA10780AD02139B29'
rep = requests.get(url=url, data=data).json()
print(rep)
errorDescription = rep['errorDescription']
if errorDescription == '查询成功':
print("红包查询接口测试通过")
else:
print("红包查询接口测试不通过")
test()
我们可以看到因为每一个接口的请求方式都是不一样的,传参也不一样,返回结果的校验字段与校验值也是不一样的,所以我们需要一个接口请求写一个方法,这样做好处是清晰方便,便于代码检查,但缺点也同样是异常明显的。首先代码冗余,重复性代码过多,不便于维护而且我们做接口测试,不能只是把接口测通就算通过了,我们还需要进行接口的正反用例,对接口进行边界值测试,传参类型测试,传参合法性测试等等,那就需要我们频繁的修改传参和断言字段与断言字段值,而且我们进行结果断言的时候不能只是用等于来进行校验,因为有的返回字段我们需要对他的类型就行校验,返回的结果的范围进行校验,所以我们要写多个断言判断的方法,这么来看 接口测试用代码来实现 还真不是那么简简单单 so easy的事啊!!!
我们仅仅用requests模块进行简单的接口测试是行得通的,但是要只有requests模块给整个公司上百个接口进行测试的话显然这是很难实现地,那么有没有一个更好的方法或者说有一个现成的框架供我们使用呢?答案当时是有的,这就是unittest框架,今天我们来介绍一下他
三。unittest框架简介
unittest单元测试框架不仅可以适用于单元测试和接口自动化测试用例的开发与执行,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成HTML格式的测试结果,便于查看,这么看来unittest框架简直就是自动化测试人员必须掌握的技能之一。