使用Python代码执行接口测试

除了使用postman我们能使用Python代码执行接口测试,这有利于我们之后的接口自动化测试的执行

一、安装 requests库

执行前我们需要依赖requests库,直接pip安装即可

pip install requests

 安装完成就可以开始写代码了

二、GET类型的接口用代码验证

#get类型的接口用代码验证
#第一种用法
res = requests.get("http://sky.nnzhp.cn/api/sparrow/student?limit=1&page=1")
print(res.text)

# 第二种写法
a= "http://sky.nnzhp.cn/api/sparrow/student"
b= "limit=1&page=1"
res = requests.get(url=a,params=b)
# print(res.text)

# GET的第三种提交方式
url_huoquxueshengliebiao="http://sky.nnzhp.cn/api/sparrow/student"
dice_huoquliebiao={
    "limit":"2",
    "page":"2"
}
ressss=requests.request("get",url_huoquxueshengliebiao,params=dice_huoquliebiao)
print(ressss.text)

get请求有三种写法,随意一种即可

requests.后面跟的是提交方式

三、POST请求

# POST请求
url_dizhi="http://sky.nnzhp.cn/api/user/register"
zhuce_data={
    "phone":"16677795862",
    "email":"suqi2004666@qq.com",
    "nick":"张铁蛋",
    "password":"123456",
    "password2":"123456"
}
abdc = requests.post(url=url_dizhi,data=zhuce_data)
print(abdc.text)
模拟POST的JSON数据提交
# 模拟POST的JSON数据提交
dice_url= "http://sky.nnzhp.cn/api/sparrow/student"
dice_xinzeng={
    "name":"苇名",
    "grade":"六年级",
    "phone":"15742695486"
}
sss= requests.post(dice_url,json=dice_xinzeng)
print(sss.text)

四、requests.request

# requests.request可以模拟任何请求比如GET和POST,这里是模拟的POST的JSON数据提交
dice_url= "http://sky.nnzhp.cn/api/sparrow/student"
dice_xinzeng={
    "name":"苇名",
    "grade":"六年级",
    "phone":"15744895886"
}
SSR=requests.request("post",dice_url,json=dice_xinzeng)
print(SSR.text)

我们可以使用requests.request模拟任意类型的提交,只要在里面声明是一个什么样的提交方式

# 用requests.request来模拟POST的表单提交
url_dizhi="http://sky.nnzhp.cn/api/user/register"
zhuce_data={
    "phone":"16677766862",
    "email":"suqi2005566@qq.com",
    "nick":"苇名一心",
    "password":"123456",
    "password2":"123456"
}
SRR=requests.request(url=url_dizhi,method="POST",data=zhuce_data)
print(SRR.text)

五、模拟带有信息头的接口操作

需要在数据提交前先模拟一个信息头数据

header={
		"key":"value",
		"key1":"value1"
}
requests.post(url,数据,headers=header)

六、响应信息的解析

最后的响应信息有多种,我们可以输出我们想要的响应信息

#res.text以文本的方式把结果展示出来
#res.content 以字节的方式展示出来
#res.json() 获取响应的json数据,并可以对数据再次操作
#获取响应信息的状态码 res.status_code
#获取响应的头信息 res.headers
#获取响应信息的编码格式 res.encoding
#获取响应信息的cookies res.cookies

url_huoquxueshengliebiao="http://sky.nnzhp.cn/api/sparrow/student"
dice_huoquliebiao={
    "limit":"2",
    "page":"2"
}
ressss=requests.request("get",url_huoquxueshengliebiao,params=dice_huoquliebiao)
print(ressss.text)
print(ressss.status_code)
print(ressss.json())
print(ressss.json().get("msg"))
print(ressss.cookies)
print(ressss.headers)
print(ressss.encoding)

七、关联

依旧是针对先登录再操作的接口进行的操作

使用token进行端口联系

# 商城登录
url_dengl= "https://admin-api.macrozheng.com/admin/login"
dice_user={
    "username":"admin",
    "password":"macro123"
}
wwwc=requests.request(url=url_dengl,method="POST",json=dice_user)
token= wwwc.json().get("data").get("token")   #先查看token的位置,这里的token是在data里面
print(token)
wchks_url="https://admin-api.macrozheng.com/admin/list"
# 头字段的Authorization,值是Bearer +token
# headers:
# Authorization		Bearer eyJhbGciOiJIUzUxM
chakan = {
    "Authorization":"Bearer "+token
}
chklwa= requests.request(url=wchks_url,method="GET",headers=chakan)
print(chklwa.text)

我们查看token的时候先查看一下返回的信息中token在哪里,然后一级一级找,有时候直接写token是找不到的

用cookie登录进行端口联系

# 使用cookie登录进行端口联系
url_yanzhangma = "http://172.16.0.71/index.php?m=Home&c=User&a=verify&r=0.8412150058927552"
res = requests.get(url_yanzhangma)
print(res.cookies.get("PHPSESSID"))
cookieid = res.cookies.get("PHPSESSID")

url_denglu = "http://172.16.0.71/index.php?m=Home&c=User&a=do_login&t=0.7493095487796853"
# 第一种cookie用法
# cookie={
#     "PHPSESSID": cookieid
# }
# 第二种cookie用
# headers = {
#     "Cookie":"PHPSESSID"+cookieid
# }
denglu={
    "username":"18839581699",
    "password":"123456",
    "verify_code":"8888"
}
res22 = requests.post(url_denglu, data=denglu,headers=headers)
print(res22.json())

在登录的时候有验证码,测试的时候有时候开发会把验证码写一个固定值方便测试,但是直接用固定值是会提示验证码错误的,这是因为cookie,为了验证是本人操作,我们要把上次操作的cookie带上一起发出去,这样验证码才能通过,两种放方法任意即可

session

使用session解决接口之间传递cookie
# 使用session解决接口之间传递cookie
session = requests.Session()
url_yanzhangma = "http://172.16.0.71/index.php?m=Home&c=User&a=verify&r=0.8412150058927552"
session.get(url_yanzhangma)
url_denglu = "http://172.16.0.71/index.php?m=Home&c=User&a=do_login&t=0.7493095487796853"
denglu={
    "username":"18839581699",
    "password":"123456",
    "verify_code":"8888"
}
ress= session.post(url_denglu, data=denglu)
print(ress.json())

cookie使用麻烦,我们直接用session也可以解决,首先转换把requests换成session,接下来的操作都是session. ,不用requests. 

 八、上传文件方法

# 上传文件方法
zhuce_url= "http://sky.nnzhp.cn/api/user/register"
num = random.randint(1000,9999)
dhenzexinxi_data={
    "phone":"1663731"+str(num),
    "email":"1452"+str(num)+"@wqsadw.com",
    "nick":"王德法",
    "password":"123456",
    "password2":"123456"
}
fiel_data={
    "avatar":("ss.png",open(r"C:\Users\suqi2\Pictures\Camera Roll\ss.png","rb"))
}
rebd= requests.post(zhuce_url,data=dhenzexinxi_data,files=fiel_data)
print(rebd.text)

有些时候我们需要进行上传操作,比如上传头像,我们就可以用这种方法来上传我们需要的文件

num = random.randint(1000,9999)

这是一个随数生成,放在注册里面方便解决注册重复问题

 测试常用的就是这些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Betray391

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值