本篇内容介绍了“Python接口自动化实现接口依赖”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
<编辑类="目录">目录编辑>- <李>
一、场景说明
李> <李>二、令牌处理思路
李> <李>三,JsonPath基本用法
李>- <李>
1, JsonPath介绍
李> <李>2, JsonPath语法
李> <李>3, JsonPath源码
李> <李>4, JsonPath实战
李>四、令牌依赖实例
李>- <李>
⑤接下来编写函数,获取登录接口返回值并提取令牌和token_type进行拼接。这里要使用JsonPath模块提取返回的令牌和token_type。
李> <李>⑥最后定义类,将牌作为类属性,整体代码如下:
李> <李>⑦充值接口携带令牌请求。
李>总结:
李>一、场景说明
在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖?
在此之前我们介绍过会话管理器保存会话状态。如果接口请求需要携带令牌,那么又如果处理呢?以下详细介绍。
未登录状态下,直接请求充值接口的异常场景:
import unittest import 请求 class TestRecharge (unittest.TestCase): ,,,def 设置(自我): ,,,,,,, ,,,def 拆卸(自我): ,,,,,,, ,,,def test_recharge(自我): ,,,,,,,url =, & # 39; http://127.0.0.1:8888充电# 39; ,,,,,,,payload =, { ,,,,,,,,,,,“member_id":, 100004312, ,,,,,,,,,,,“amount": 80 ,,,,,,,} ,,,,,,,res =, requests.post (url, json=有效载荷) ,,,,,,,印刷(res.json ()) if __name__ ==, & # 39; __main__ # 39;: ,,,unittest.main ()
<强>运行结果如下:强>
{& # 39;代码# 39;:1003 & # 39;味精# 39;:& # 39;未授权或令牌已过期& # 39;}
引用>
二、令牌处理思路
在处理之前,令牌灵魂三连问:
<李>
如何获取令牌吗?
李> <李>获取的令牌如何管理?
李> <李>其他接口如何携带令牌吗?
李><强>思路如下:强>
1。抽取登录接口返回值中的令牌,
2。使用全局变量存储token.token可以存到yaml或者json或者ini的配置文件里,以下介绍将牌作为类属性;
3。其他接口将令牌值放入请求头,发送请求;
三,JsonPath基本用法
我们需要从登录接口中提取出牌,这里介绍JsonPath基本用法。
1, JsonPath介绍
JsonPath为json文档提供了解析能力,通过使用JsonPath,你可以方便的查找节点,获取想要的数据,JsonPath是json版的XPath。
2, JsonPath语法
JsonPath说明<代码> 代码>美元文档根元素<代码> @ 代码>当前元素<代码>。代码>或<代码>[]代码>匹配下级元素<代码> . 代码>递归匹配所有子元素<代码> * 代码>通配符,匹配下级元素<代码>[]> 代码下标运算符,根据索引获取元素,JsonPath索引从0开始<代码>[,]代码>连接操作符,将多个结果拼接成数组返回,可以使用索引或别名<代码>[开始:结束步骤):> 代码数据切片操作<代码>吗?()代码>过滤表达式这么多语法规范,大家会觉得一脸懵逼吧,细心的小伙伴会发现语法中. .表示递归匹配所有子元素,简单粗暴,用. .获取所有匹配的子元素,通过索引拿到想要的值,以下以实战进行演练。
3, JsonPath源码
def JsonPath (obj, expr, result_type=& # 39;价值# 39;,,=0,调试,use_eval=True): ,,,“““traverse JSON object using jsonpath expr,, returning values 或是paths"““<强> obj 强>:需要解析的对象,比如接口的返回值。
<强> expr: 强>匹配的表达式。
4, JsonPath实战
以下编写代码进行演示。
得到jsonpath import JsonPath #,json格式结果 res =, { ,,,“code":, 0, ,,,“msg":,“OK" ,,,“data":, { ,,,,,,,“token_info":, { ,,,,,,,,,,,“token_type":,“Bearer" ,,,,,,,,,,,“expires_in":,“2020 - 05 - 28, 13:07:29", ,,,,,,,,,,,“token":,“eyJhbGciOiJIUzUxAiJ9.eyJtZW1iZZJfaWQiOjEwMDA1MTMxNSwiZXhwIjoxNTkwNjQyNDQ5fQ.s6A7pzLILf9tqpEDAU9wIPGGLGkgKEQ6EBHq26l-eUM5seCb48DWalkE7u16iRZv3uzD5hIDFbw41Jmi9V0T_Q" ,,,,,,,} ,,,} } #,获取res中的令牌 token =, jsonpath (res & # 39;美元. .令牌# 39;)[0] 打印(令牌)Python接口自动化实现接口依赖