Python接口自动化实现接口依赖

  介绍

本篇内容介绍了“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说明<代码> 美元文档根元素<代码> @ 当前元素<代码>。或<代码>[]匹配下级元素<代码> . 递归匹配所有子元素<代码> * 通配符,匹配下级元素<代码>[]> [,]连接操作符,将多个结果拼接成数组返回,可以使用索引或别名<代码>[开始:结束步骤):> 吗?()过滤表达式

这么多语法规范,大家会觉得一脸懵逼吧,细心的小伙伴会发现语法中. .表示递归匹配所有子元素,简单粗暴,用. .获取所有匹配的子元素,通过索引拿到想要的值,以下以实战进行演练。

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接口自动化实现接口依赖