软件测试最全接口测试--mock基础+requests请求+unittest封装--实战操作(2),万字解析

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

import requests

url = ‘http://127.0.0.1:5000/api/qingan/login’

data = {

“username”: “admin”,

“password”: “123456”,

}

head = {“Content-Type”: ‘application/json’}

res = requests.post(url, json=data, headers=head)

print(res.json())

这里因为我们转换了json格式,所以,头部信息这里可以不加也能请求成功。请求成功后我们可以看到返回信息中带了token,我们可以直接进行下一步的操作。

提取token


上述的例子,我们直接来拿token,提取token肯定是要在请求后且还要是请求成功后才行才会有哦。

token用于标识接口调用者的身份,凭证。简单来说,带了token你就可以免登录

token一般放在请求头headers或者body参数中

token一般由签名+时间戳组成,所以token可以是一次性的,也可以是一定时间范围内有效的

session

提取token我们有其他的办法,使用session。通俗的讲,你使用session成功的登录了某个网站,那么session对象就会保存要携带的信息,如cookie,header等,如果再次使用该session对象对网站的其他网页访问(查看订单信息)时都会默认带上这些参数。

先来看看上述的例子怎么操作的:

import requests

url = ‘http://127.0.0.1:5000/api/qingan/login’

data = {

“username”: “admin”,

“password”: “123456”,

}

head = {“Content-Type”: ‘application/json’}

se = requests.session()

res = se.post(url, json=data, headers=head)

print(res.json())

get_token = res.json()[‘token’]

通过seesion会话获取token,不写入下面会访问失败

se.headers.update({‘token’: get_token})

print(se.headers)

url2 = ‘http://127.0.0.1:5000/api/qingan/userList’

通过session可以不加头部,会自动添加头部信息

rres = se.get(url2)

print(rres.text)

我们用requests库中的session对象来进行请求,session对象中也是可以发送post,get等请求的。下面我们还会介绍session对象的auth属性,接着看。

在代码中我们提取了token并更新了头部信息,为了更加清晰的看出来,所以我加了一个打印,拿到代码的朋友请求之后就会看到头部信息中添加了token信息了。由此,这样我们发送下面的用户查询接口就能查询到了。

如果不用session对象,普通的操作呢:

import requests

url = ‘http://127.0.0.1:5000/api/qingan/login’

data = {

“username”: “admin”,

“password”: “123456”,

}

head = {“Content-Type”: ‘application/json’}

res = requests.post(url, json=data, headers=head)

print(res.json())

get_token = res.json()[‘token’]

head[‘token’] = get_token

url2 = ‘http://127.0.0.1:5000/api/qingan/userList’

rres = requests.get(url2,headers=head)

print(rres.json())

二者呢,从代码上看下面的例子似乎是要少几行代码呢,嘿嘿,看个人需求自行选择吧。

cookie


import requests

url = ‘http://www.testingedu.com.cn:8000/index.php?m=Home&c=User&a=do_login’

data = {

“username”:“13800138006”,

“password”:“123456”,

“verify_code”:“1111”

}

head = {“Content-Type”: ‘application/x-www-form-urlencoded’}

se = requests.session()

res = se.post(url,data=data,headers=head)

print(res.json())

url2 = ‘http://www.testingedu.com.cn:8000/Home/Order/order_list.html’

rres = se.get(url2)

print(rres.text)

一般我们想跳过cookie直接登录是需要获取cookie的,但是我们通过session对象直接登录,至于不用session对象跳过登录获取内容博主是写过一篇文章的:教你使用cookie登录_清欢无别事-CSDN博客各位可以做一个参考,相对而言session比较的简便一些。

这里跟上述例子一样,session对象会自动携带这些信息,只要你用的是同一个变量去发起请求也可以称为session请求,成功响应后,再次用这个变量用于下一个接口请求,会自动添加进去。

auth鉴权


auth鉴权,文件中也有写示例,auth鉴权跟加密有一定的关系,所以这里就将加密一起讲了。加密有很多种方式,如果你自己再网页种遇到这种了,如果你时间够,你很强倒也无所谓,不然就放弃吧,解密太繁琐了。

先来看看这个网址,还是同样得话,仅限于学习:新榜

这里可以看到密码是加密的,应该很多的网址都有设置加密,但是你不知道通过什么加密的。但是这也不影响我们访问它,注册了访问成功后,这里都会显示,所以,我们直接复制url:

进入到postman,点击import导入:

导入进去就能访问了,这里我是没有注册的,这里也是告诉各位一个访问的方法而已:

那么看看我们自己的接口吧。我们先用postman来看看auth鉴权:

请求后是可以看到请求成功的,如果你把password改了就会请求不到了。接着看下面的代码:

先来看看加密部分:这里举例的是base64

import base64

username = ‘admin’

password = ‘qingan123456’

res = base64.b64encode(bytes(username,encoding=‘utf-8’)).decode(‘ascii’)

res1 = base64.b64encode(bytes(password,encoding=‘utf-8’)).decode(‘ascii’)

print(res,res1)

结果 YWRtaW4= cWluZ2FuMTIzNDU2

那么这样子是不能够请求成功的,那么我们就需要改改:

import requests

import base64

username = ‘admin’

password = ‘qingan123456’

res2 = base64.b64encode(bytes(username,encoding=‘utf-8’)+b":"+bytes(password,encoding=‘utf-8’)).decode(‘ascii’)

print(res2)

YWRtaW46cWluZ2FuMTIzNDU2

那么我们用加密的来用代码发起请求看看:

–>>>清安<<<—

import requests

url = “http://127.0.0.1:5000/api/qingan/auth”

payload={}

headers = {

‘Authorization’: ‘Basic YWRtaW46cWluZ2FuMTIzNDU2’

}

response = requests.request(“POST”, url, headers=headers, data=payload)

print(response.text)

{

“code”: 10200,

“message”: “Authorization success!”

}

如果你想时时加密,大可以将上面的加密过程改成input输入加密的方式。

那么既然时auth鉴权,那么我们是不是可以通过requests库的session对象快速解决呢,简便这其中的过程:

url = “http://127.0.0.1:5000/api/qingan/auth”

sess = requests.session()

sess.auth = (‘admin’,‘qingan123456’)

res = sess.request(“POST”,url)

print(res.json())

结果就不贴出来了,跟上述的结果是一致的,答案是可以通过session对象来简便这其中的过程的。

上传文件

====

项目地址:http://www.testingedu.com.cn:8000/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/ban ner/dir/images.html

直接看一波代码,上传文件接口倒也还算简单:

import requests

url = ‘http://www.testingedu.com.cn:8000/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/ban ner/dir/images.html’

files = {

‘file’😦

‘qing.jpg’, # 文件名称

open(r’F:\qing.jpg’,‘rb’), # 文件路径

‘image/jpg’ # 文件类型

)

}

data = {

“name”:“qing.jpg”

}

res = requests.post(url, data=data,files=files)

print(res.json())

响应信息一般都以json格式查看,但是也有其他的情况用text的,这取决于文档。不然就看自己经验来了。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

ta=data,files=files)

print(res.json())

响应信息一般都以json格式查看,但是也有其他的情况用text的,这取决于文档。不然就看自己经验来了。

[外链图片转存中…(img-960o2SZE-1715561278552)]
[外链图片转存中…(img-SNrC70xb-1715561278553)]
[外链图片转存中…(img-0iNrAm3s-1715561278553)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值