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

news/2024/11/18 1:50:42/

文章目录

  • 前言
  • 一、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是字符串类型

二、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博客)

 

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

免费公开的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/)

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

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

举例:

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

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

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

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

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

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

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

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


 

总结

暂无


http://www.ppmy.cn/news/40979.html

相关文章

第三章 运算符

文章目录1. 什么是运算符2 算术运算符2.1 基本四则运算符 、-、*、/、%2.2 增量赋值运算符 、- 、* 、/ 、%2.3 自增/自减运算符 、--3. 关系运算符4. 逻辑运算符5. 位运算符6. 移位运算7. 条件运算符8. 运算符的优先级1. 什么是运算符 计算机的最基本的用途之一就是执行数学运…

一篇搞定Lambda和Stream流

一、Lambda表达式 jdk8中的语法糖,优化某些匿名内部类的写法,函数式编程的重要体现,不再关注对象是什么,更关注数据进行了什么操作 1、练习 练习1 练习2 练习3 练习4 练习5 2、省略规则 参数类型可以省略方法体只有一句代码时…

分库分表的知识

简述 分库分表是数据量大的场景下的一种技术优化方案,当数据量逐渐增大,单库单表已经无法满足业务需求时,分库分表成为了一个必要的选项。 分库分表可以有效地缓解数据库的性能瓶颈,提高系统的稳定性和可扩展性。但是&#xff0c…

C语言学习路径指南:从入门到精通

本期是关于C语言学习路径的介绍,是根据我发布的博客来进行汇总,也是对C语言知识的一个整体的串联总结,仅代表我的个人观点! C语言专栏:C语言:从入门到精通 目录 1.初始C语言 2.初阶C语言 3.进阶C语言 1…

Java多线程:多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask

CyclicBarrier 接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面…

计算机系统概论

提示:星河不问赶路人,岁月不负有心人 文章目录前言知识1.1 计算机的发展1.2 计算机硬件的基本组成1.3 计算机的性能指标前言知识 机器字长:计算机一次整数运算所能处理的二进制位数 .exe文件就是用机器语言描述的程序 1.1 计算机的发展 计…

【算法基础】算法复杂度

文章目录 算法复杂度时间复杂度空间复杂度算法复杂度 算法复杂度是指算法执行时间和所需空间的度量。在计算机科学中,算法复杂度通常分为时间复杂度和空间复杂度两种。 时间复杂度是指算法执行所需时间随着输入规模的增加而增加的速度。常用大O符号表示,例如O(1)、O(log n)…

ios逆向工具有那些

以下是一些常用的 iOS 逆向工具: Cycript:一种用于在运行时动态分析和修改 iOS 应用程序的强大工具,可以与应用程序进行交互式调试和注入代码。 Frida:一个强大的动态二进制插桩工具,可以在运行时修改应用程序的行为&…