接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)

文章目录

  • 前言
  • 一、requests库的使用
  • 二、json和字典的区别
  • 三、后端登录接口-请求数据生成
  • 四、接口自动化-对应电商项目中的功能
  • 五、来自postman的代码-后端登录
  • 总结

前言

记录:json和字典的区别,json和字段的相互转化;postman发送请求与Python中代码发送请求的区别。


一、requests库的使用

安装:
pip install requests

官方文档:https://docs.python-requests.org/zh_CN/latest/

1、导入requests

2、requests的请求方法:
requests.get(url,param=None) 发起get请求。params是请求参数,是追加在url后面的。字典类型。

requests.post(url,data=None,json=None) 发起post请求:

data参数:任意的content-type都可以用参数传参。

不指明content-type的情况下,默认的content-type是x-www-form-urlencoded,且是字典格式。

如果是其它的content-type,需要在headers当中,加上content-type类型。

json参数: 给content-type为application/json格式使用的。

字典类型   不需要在header当中指定content-type
 

以上2个方法,都是使用的requests.request(method,url,**kwargs)

Requests类 - 
Response类 - 
 resp.headers是响应头
 resp.status_code是响应状态码
 resp.text是字符串类型

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)_第1张图片

二、json和字典的区别

学习地址:https://www.w3cschool.cn/json/

一些区别:

字符串:
json: 双引号。
python字典:单引双号都可以。

python: None
java/javascript: null(python不认识。如果响应结果当中有null, 需要转换成None) 

布尔值:
json: true,false
python:True, False

字典:数据类型。
json: 数据格式。 json格式的字符串

注意:json其实是字符串(只不过这种字符串是格式化了的字符串,也就是长得像字典的字符串),字典是数据类型

json格式的字符串和字典之间的转换:json库

内置库:json
json.loads(json串)  把json串,转换成python字典
json.dumps(python字典对象,indent=空格个数)  把python字典,转换成json串。indent是格式化展示json串

可以这样记忆:load向下(向下就更高级转化成字典),dump向上(向上就是向原始数据转化,就是字符串)

关于requests处理json参数的文章:
     https://www.cnblogs.com/Simple-Small/p/9830270.html

举例(不完善):

建议看我另一篇文章有详细阐述(Python中的接口测试中关于request方法中的json和data参数接收数据的区别_python request接收json_宏基骑士的博客-CSDN博客)

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)_第2张图片

 接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)_第3张图片

三、后端登录接口-请求数据生成

免费公开的api: 聚合数据 - https://www.juhe.cn/docs?bd_vid=7361015517896645400

举例(一个登录接口):
url: http://mall.lemonban.com:8108/adminLogin

method: post

请求数据:

        t(可选): 时间戳(13位)  int(time.time()*1000)

        principal(必传): 用户名

        credentials(必传): 密码

        sessionUUID(可选):uuid

        imageCode(必传): 验证码

注意点:

1、关于Python生成UUID

文章:https://blog.csdn.net/yl416306434/article/details/80569688

2、验证码:

1)万能验证码:lemon

2)第三方打码平台: 图鉴(http://www.ttshitu.com/)

代码截图(验证码为万能验证码时):

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)_第4张图片

四、接口自动化-对应电商项目中的功能

举例:

1、登录后台管理
2、添加一个商品
3、注册前台用户
4、登录前台用户
5、购买、下订单、支付

五、来自postman的代码-后端登录

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)_第5张图片

第一种写法(直接拿取postman当中的Python写法)

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)_第6张图片

另一种写法(不使用json库去序列化字典):

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)_第7张图片

注意:我们从第二写法很第一种写法对比,发现第二种写法少了请求头,那么想想这是为什么呢?

因为,我们使用第一种方式时,原本data默认的是x-www-form-urlencoded这种格式,是不需要指明请求头的,那么使用其他格式的时候,需要在请求头里面指明  'Content-Type': 'application/json'。当然这里只是针对data传参才会特别去指明请求头。

如果使用的是第二方式,那么就不需要在请求头里面指明  'Content-Type':  因为有个关键字参数json,这个就直接自动转化成了json格式的字符串,其实对应postman中,就是raw(原始数据),而这个原始时间就是json格式。

也就是说:Python里面提供了2种处理数据的方式。就看看自己喜欢用哪种了。


 

总结

暂无

你可能感兴趣的:(python接口测试,python,pandas,开发语言)