不懂接口的可以先去了解一下,我就简单的说明一下接口的定义,接口定义:就是开发人员定义程序模块间连接的协议,我们传什么参数,返回什么参数,这都是开发定义的嘿嘿,接下来我要讲的是接口自动化测试的框架搭建,我们要用python+requests+unitest+xlrd。
1.首先requests是模拟发送请求的作用,可以这样简单的理解,好比post,get请求等等
2.unitest就是管理测试用例的作用
3.xlrd就是管理我们在代码里面数据的作用
注意:这些库如果没有是要下载的,下载方式是:win+r然后pip install requests另外两个也一样,把后面改了就行,下载完后如下,看好了:
第一步首先你要知道怎么用python+requests发送一个请求:
import requests
#请求网址
url=''
#请求body
data={
username:'admin',
password:123456
}
requests.post(url,json=data)
其中data就是按json的形式传入,这样我们就是模仿一个post请求(自己有登录接口的话更好,这里我只是教大家怎么模拟发送接口的),我们发现其实我们可以把这个给封装一个函数,然后把我们的数据按形参的形式传入就方便一些,代码如下,(就写了get和post常用的模板):
class Tool:
def do_get(self,url,params=None,**kwargs):
return requests.get(url,params,**kwargs)
def do_post(self,url,data=None,**kwargs):
return requests.post(url,data,**kwargs)
其中代码里面,params为None,data=None是因为我们不是所有请求的时候都要给数据的,就好比我们访问百度,我们是自己get百度这个网址的,所有我们这里用默认形参为None表示,那后面加这个**kwargs是表示我们发送请求的headers,他们是用字典的形式存储的,我们在发送请求时虽然有些是默认的,所以有时候我们不加上这个无所谓,但有时候我们是要加上一些特殊的数据的,就比如cookie。
接下来就是我们常用的就是发送了请求怎么获取响应body里面的内容呢?代码如下:
def get_text(self,res,key):
try:
txt=json.load(res)
value=jsonpath.jsonpath(txt,'$..{0}'.format(key))
if len(value)==1:
return value[0]
else:
return value
????except :
????raise ValueError('没有这个元素')
注意我是把这些函数都封装到这个Tool这个类里面的,当我们的工具使用,这里面要导入我们的json库和jsonpath库,没有的还是和上面一样自己下载,pip install json等等
上面代码我们先通过json对我们的响应请求进行分析,是按json形式的,jsonpath.jsonpath(txt,'$..{0}'.format(key))这段代码是jsonpath库里面的方法,记住就行,意思就是把我们想获取的元素信息按照列表的形式存储,因为我们响应报文里面的内容有可能不止一个我们想获取的元素,所有我们要做判断
接下来就是我们的断言了,代码如下:
def assert_test(self,value1,value2):
assert value1==value2,'断言失败,{0}不等于{1}'.format(value1,value2)
今天就写到这里,明天写后面工具的使用。。。。。。。。。。。。
|