如何通过Python实现接口自动化的参数关联?

news2024/11/18 4:51:12

前言

通常在接口自动化中,经常会参数关联的问题,那么什么是参数关联?

参数关联就是上一个接口的返回值会被下一个接口当做参数运用,其中Python中可以实现参数关联的方法有很多种,今天小编给大家介绍下,如何通过Python来实现接口自动化中的参数关联。

UnitTest

虽然说目前Pytest框架比较流向,但是目前应该有绝大部分公司还是在使用UnitTest框架,那么小编先介绍下如何通过UnitTest来实现接口自动化的参数关联。

方法一

下面小编通过测试用例返回参数的形式进行实现参数关联。

#coding:utf-8

import requests

import unittest

class Test(unittest.TestCase):

def test_01(self):

'''查询天气接口测试用例'''

url='http://apis.juhe.cn/simpleWeather/query'

data={

'city':'上海',

'key':'xxxxxxxxxxxx'

}

r=requests.post(url,data=data).json()

info=r['result']['realtime']['info']

print(info)

return info

def test_02(self):

'''查询字典测试用例'''

a=self.test_01()

url='http://v.juhe.cn/xhzd/query'

data={

'word':a,

'key':'xxxxxxxxxxxx'

''

}

r=requests.post(url,data=data)

result=r.json()

print(result)

if__name__=='__main__':

unittest.main()

通过使用上述方法返回的结果来进行供给下一个接口使用,不会因为执行顺序所影响,但是就是会把上面的的用例多执行一遍。可以通过下方执行结果看出,已经成功的实现了接口关联。

方法二

小编在这里使用一种全局变量的方法,我们先定义一个名称,然后用这个名称去接收我们即将返回的参数值,最后在下一条用例中进行使用。

#coding:utf-8

import requests

import unittest

class Test(unittest.TestCase):

def test_01(self):

'''查询天气接口测试用例'''

global info

url='http://apis.juhe.cn/simpleWeather/query'

data={

'city':'上海',

'key':'xxxxxxxxxxx'

}

r=requests.post(url,data=data).json()

info=r['result']['realtime']['info']

print(info)

def test_02(self):

'''查询字典测试用例'''

url='http://v.juhe.cn/xhzd/query'

data={

'word':info,

'key':'xxxxxxxx'

''

}

r=requests.post(url,data=data)

result=r.json()

print(result)

if__name__=='__main__':

unittest.main()

通过运行上述代码,发现已经成功将天气接口中的参数“晴”提出来,然后供下一个接口进行查询。

Pytest

介绍完UnitTest了,那么小编来介绍下如何通过Pytest来进行实现参数关联,其实原理都是一样的,只不过小编多介绍几种类似的方法。

#coding:utf-8

import requests

import re

def test_01():

'''查询天气接口测试用例'''

url='http://apis.juhe.cn/simpleWeather/query'

data={

'city':'上海',

'key':'xxxxxxxx'

}

r=requests.post(url,data=data).json()

#通过正则获取想要的数据

a=re.findall("'info':'(.*?)','wid':'00',",str(r))

info=globals()['info']=a[0]

print(info)

def test_02():

'''查询字典测试用例'''

url='http://v.juhe.cn/xhzd/query'

data={

'word':globals()['info'],

'key':'xxxxxxx'

''

}

r=requests.post(url,data=data)

result=r.json()

print(result)

上述测试用例中,小编使用了globals()函数用来获取全局作用域,结果通过字典的形式进行返回,而且小编通过获取下一个借口的参数值时,使用了正则表达式的提取,形成了多种方法均可实现我们的功能。

总结

小编分别通过Pytest和UnitTest两种框架介绍了在做接口测试时,如何通过全局变量的形式进行参数关联,其中也分别介绍了提取参数值时也采用了不同的方法,小伙伴们可以自己动手尝试下。

如果有更好的方法也可以进行留言,大家一起参考学习,当然至于怎么运用到公司项目中,这个就要看小伙伴们对参数关联和全局变量的掌握以及项目实际情况来看了,感谢您的阅读,希望本篇文章对您有所帮助。

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1039912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IC验证| Verilog语法详解之条件语句

Verilog 是一种用于数字逻辑电路设计的硬件描述语言,可以用来进行数字电路的仿真验证、时序分析、逻辑综合。 既是一种行为级(可用于电路的功能描述)描述语言又是一种结构性(可用于元器件及其之间的连接)描述语言。 …

RedisTemplate出现\xac\xed\x00\x05t\x00\x0f前缀解决

问题描叙 出现这种乱码前缀的原因是没有进行序列化,因此导致在传输过程出现乱码问题,存到数据库,发现 key,hash key/value 都有 \xAC\xED\x00\x05t\x00 前缀。RedisTemplate类中默认是没有设置序列化的。 解决方法 设置RedisTemplate的序列…

如何快速建立一个专业、高效的宠物医院小程序?

随着社会的发展和科技的进步,人们对于宠物的关注度越来越高,养宠物已经成为了许多人的生活方式。然而,宠物的健康问题也随之而来,宠物医院成为了不可或缺的存在。为了更好地服务于宠物主人,打造一个专属的宠物医院线上…

IntelliJ IDEA 左侧Commit栏不见了

1.点击File->Settings->Version Control->Commit 2.勾选Use non-modal commit interface

关于ElementUI之首页导航与左侧菜单实现

目录 一.Mock 1.1.什么是Mock.js 1.2.特点 1.3.安装与配置 1.3.1. 安装mock.js 1.3.2.引入mock.js 1.4.mockjs使用 1.4.1.定义测试数据文件 1.4.2.mock拦截Ajax请求 1.4.3.界面代码优化 二.总线 2.1.是什么 2.2.前期准备 2.3.配置组件与路由关系 2.3.1. 配置组件 …

Mock.js之Element-ui搭建首页导航与左侧菜单

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《springMvc使用》 ⛺️ 生活的理想,为了不断更新自己 ! 1、Mock.js的使用 1.1.什么是Mock.js Mock.js是一个模拟数据的生成器,用来帮助前…

希尔排序代码及时间空间复杂度

希尔排序(Shell Sort)是一种插入排序的改进算法,它通过将数据分成多个小组来排序,然后逐渐减小这些小组的间隔,直到最后一次使用标准的插入排序算法。希尔排序的时间复杂度取决于使用的间隔序列,通常为 O(n…

Vulnhub-driftingbules:5 靶机复现完整过程

记录对driftingbules:5 靶机的复现过程 kali的IP地址:192.168.200.14 靶机IP地址:192.168.200.60 一、信息收集 1.对利用nmap目标靶机进行扫描 由于arp-scan属于轻量级扫描,在此直接使用nmap进行对目标靶机扫描开放端口 nmap -A -p 1-65…

从SmartPay dll学到的内容 宏定义 单件模式 迭代 日志记录函数进入与出来

日志记录函数进入与出来:利用C的反初始化来记录退出 函数运行记时、调用次数统计等 宏定义 配置里的宏 WIN32;NDEBUG;_WINDOWS;_USRDLL;SMARTPAY_PGLDLL_192787_EXPORTS;ESLOG_RELEASE;HAVE_STRUCT_TIMESPEC;%(PreprocessorDefinitions)减少代码耦合 关闭日志等 …

国内音视频开发的前景怎么样?

国内音视频开发的前景怎么样? 本人就是音视频开发,谈一下我的观点。 目前干我们这一行的年纪都比较大,我自己工作五年就是很年轻的了。年会上老板说除了音视频中心的大家都是比较年轻的。。。 有些也是过了35岁了,四十的都有。是不是觉得这…

Unity(四) 基于关键帧的动画与骨骼动画

Unity中有两种类型的动画:基于关键帧的动画和骨骼动画 基于关键帧的动画是最常见的动画形式,也称为帧动画。它将每一帧的动画存储为一个离散的关键帧,然后通过计算每一帧之间的差异来创建动画。这种类型的动画适用于不需要太多交互或程序控制…

【network】丢包网络情况记录

目录 2023-09-25 09:20 2023-09-25 11:23 接口流量 2023-09-25 09:20 2023-09-25 11:23 接口流量

使用自功率谱、互功率谱估计滤波器幅频特性

这段时间终于对工程中的随机信号的一般处理方式有点头绪了,功率谱密度估计是十分重要的方式之一,仍需继续深入细化相关内容。 示例:使用自功率谱、互功率谱估计滤波器幅频特性,自己实现 & Matlab自带函数实现。 clc;clear;cl…

BUUCTF [BJDCTF2020]EasySearch 1

“.swp” 后缀通常用于表示 Vim&#xff08;一种文本编辑器&#xff09;的交换文件。Vim 是一个强大的文本编辑器&#xff0c;它在编辑文件时会创建交换文件以确保文件内容的安全性。 审阅 访问 index.php.swp 得到源码 <?phpob_start();function get_hash(){$chars ABC…

【PDF】pdf 学习之路

PDF 文件格式解析 https://www.cnblogs.com/theyangfan/p/17074647.html 权威的文档&#xff1a; 推荐第一个连接&#xff1a; PDF Explained &#xff08;译作《PDF 解析》&#xff09; | PDF-Explained《PDF 解析》https://zxyle.github.io/PDF-Explained/ https://zxyle…

缓冲区溢出漏洞预防

什么是缓冲区溢出 组成所有应用程序的程序由缓冲区组成&#xff0c;缓冲区是在内存中分配的临时空间&#xff0c;用于保存数据&#xff0c;直到它们移动到程序的其他部分&#xff0c;缓冲区可以包含的数据字节数最初将在代码开发期间指定&#xff0c;由于没有任何类型的边界检…

UNet网络训练

UNet网络训练 训练资源 构建好UNet网络模型后&#xff0c;需要进行训练。但是训练需要特别多的原始图像和标签图像&#xff0c;对于一般而言这一步特别繁琐&#xff0c;不过在网上有一些免费的数据集可以让我们省略这一步&#xff0c;直接进行训练测试。 VOC&#xff08;Visu…

Centos环境使用Docker安装Kafka

1 Kafka简介 1、kafka是什么&#xff1f; Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者规模的网站中的所有动作流数据&#xff0c;具有高性能、持久化、多副本备份、横向扩展能力。 2、kafka的工作原理[去耦合] Kafka采用的是订阅-发布的模式&am…

Android应用线上闪退问题解决

解决Android应用线上闪退问题需要仔细的监控、调试和分析。以下是一些解决Android线上闪退问题的工具和方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 工具&#xff1a; 1.Google Play 控制台&…

anaconda navigator启动时一直卡在 loading applications 页面

anaconda navigator启动时一直卡在 loading applications 页面 方法1 在安装目录找到D:\anaconda\Lib\site-packages\anaconda_navigator\api 然后打开conda_api.py&#xff0c; 在1358行找到data yaml.load(f)&#xff0c;将其改为data yaml.safeload(f) 猜测为保证代码…