关于接口自动化,你不能不知道的高级技巧——接口自动化神器apin进阶操作

一、变量提取和引用

变量提取和引用主要是为了解决接口之间的参数依赖问题

使用场景:接口 A 的参数中需要使用接口 B 返回的某个数据,那么就要在请求 B 接口之后,提取数据保存,给请求 A 接口时使用。

1、变量提取

在用例集或用例数据中,通过 extract 字段指定要提取的变量。

语法:

"extract": {
   "变量名": ("变量保存的级别", "提取方式", "提取表达式"),
}

  • 变量名

保存数据的变量名

  • 变量保存的级别

EVN: 全局变量,settings 文件中的 EVN
env : 为局部变量(只对当前用例集有效):用例集的 env 字段

  • 提取方式

re: 正则表达式提取
jsonpath: 通过 jsonpath 提取

案例:

"extract": {# 通过jsonpath提取"token": ("env", "jsonpath", "$..token"),# 通过正则表达式提取'member_id': ("env", "re", r'"id":(.+?),')
}

 如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

2、变量引用

变量引用表达式:

$}

引用优先级:

优先引用该用例的局部变量(用例的 env 中的变量),如果局部变量不存在,则会引用全局变量(setting.py 中 ENV 中保存的变量)。

二、用例断言

关于测试用例预期结果和实际结果的比对的,apin 中封装了一个 verification 字段,只需要在 verification 中定义预期结果,实际结果提取表达式,和断言的方法,即可实现用例的断言!

1、基本语法

verification = [[断言方式, 预期结果, 实际结果]] 

2、断言方式

apin 中目前支持两种断言方式:

断言相等 :eq

预期结果和实际结果相等

verification = [['eq', 预期结果, 实际结果]] 

断言包含:contains

实际结果中包含预期结果的内容

verification = [['contains', 预期结果, 实际结果]] 

3、实际结果获取

关于断言的实际结果提取,需要使用V{{表达式}} 来进行提取,表达式支持 jsonpath 正则表达式两种提取方式方式。

正则表达式提取

# 通过正则表达式来提取实际结果中的msg字段。
verification = [['eq', {'msg':"OK"}, {"msg": "V{{msg:'(.+?)'}}"}]] 

通过 jsonpath 提取

# 通过jsonpath来提取实际结果中的msg字段。
verification = [['eq', {'msg':"OK"}, {"msg": 'V{{$..msg}}']] 

4、HTTP 状态码的断言

上述两种方式,已可提取结果返回的数据,那如果要断言接口http请求的状态码呢?

apin中也提供了一个内置的字段名,来表示http状态码。

# 断言接口请求的http状态码是否等于200
verification = [['eq', 200, 'status_code']] 

三、函数工具的使用

apin 支持在测试用例中调用自定义的函数来处理数据,如对数据进行加密处理、随机生成数据等等。

1、自定义函数

apin 创建的项目中有一个 funcTools.py,在该文件中可以自己定义函数,然后在用例中通过 F{xxx()}来调用。

  • 案例:funcTools.py 文件

import hashlib,randomdef md5_encrypt(msg):"""md5加密"""md5 = hashlib.md5()  md5.update(msg.encode("utf8"))  return md5.hexdigest()def rand_phone():"""随机生成手机号的函数"""import randomfor i in range(8):phone += str(random.randint(0, 9))return str(phone)def get_timestamp():"""获取时间戳"""return time.time()
  • 注意点:函数处理完的数据需要 return 返回哦

2、用例中引用函数

  • 引用表达式:F

  • demo1:用例数据中的 user,引用前面定义的 rand_phone 函数

{'title': "普通用户注册",'interface': "member/register","method": "post",'json': {"user": "F{rand_phone()}", "pwd": "lemon123"},
}
  • demo2:用例数据中的 pwd,引用前面定义的 md5_encrypt 函数对密码进行 md 加密

注意点:引用的函数,传递的参数如果是变量,则不需要在变量应用表达式外加引号

{'title': "普通用户登录",'interface': "member/login","method": "post",'json': {"user": "13109877890", "pwd": "F{md5_encrypt('lemon123')}"},
}# 引用函数,变量作为参数传递
{'title': "普通用户登录",'interface': "member/login","method": "post",'json': {"user": "${{user}}", "pwd": "F{md5_encrypt(${{pwd}})}"},
}

四、项目全局配置

项目中的 setting.py 文件,是整个项目的配置文件,接下来详细介绍一下项目的配置选项。

1、debug 模式运行

项目创建之后,默认运行是开启了 debug 模式,运行过程中会输出详细的 debug 级别日志。

如果不像看运行日志,则将 settings 中的 DEBUG 设置为 Flase 即可。

# 是否开启debug模式:True为debug模式,False为关闭debug模式
DEBUG = False

2、ENV 全局的变量

将 settings.py 中的 ENV 可以设置项目全局配置

全局的域名

推荐在 ENV 中设置全局的 host,不建议在每一个测试用例中去设置 host,切换测试环境切换也更方便(如果用例数据中没有自己定义 host,会自动引用全局的 host 地址)。

ENV = {"host":"http://WWW.XXX.com/",
}

全局的请求头

如果项目接口有必传的请求头数据,也可以直接在 ENV 中设置(如果用例数据中没有定义时,也会自动引用全局的 headers)。

ENV = {"host":"http://WWW.XXX.com/","headers": {"UserAgent": "apin-test01"}
}

全局的测试数据

如果用例中需要引用事先准备好的一些测试数据,如测试账号、密码之类的

如:定义一个测试账号、测试密码、用户 id

ENV = {"host":"http://WWW.XXX.com/","headers": {"UserAgent": "apin-test01"},"user":"musen@qq.com","pwd":"lemon123","user_id":111
}

测试用例中直接使用 ${{}} 即可引用,

# 引用user和pwd
{'title': "登录",'interface': "member/register","method": "post",'json': {"mobile_phone": "${{user}}", "pwd": "${{pwd}}"},
}

注意点:如果局部环境和全局变量重名,优先引用局部变量。

3、测试报告

通过setting中的TEST_RESULT,可以配置测试报告的输出信息。

TEST_RESULT = {# 测试报告文件名"filename": "report.html",# 测试人员"tester": "测试员",# 报告标题"title": "测试报告",# 报告样式 :有1,2,三个样式"templates": 1,# 报告描述信息"desc": "XX项目测试生成的报告"
}

4、邮件推送测试结果

如果要将测试结果发送到指定的邮箱中,则在 settings.py 添加 EMAIL 配置即可。

EMAIL = {# smtp服务器地址"host": 'smtp.qq.com',# smtp服务器端口"port": 465,# 邮箱账号"user": "xxxx@qq.com",# smtps授权码"password": "xxxx",# 收件人列表"to_addrs": ['xxx@qq.com','xxx@qq.com'],# 是否发送附件"is_file": True
}

5、测试结果推送到钉钉群

如果要将测试结果推送到钉钉群,则在 settings.py 添加 DINGTALK 配置即可。

DINGTALK = {#  钉钉机器人的Webhook地址"url": "",# 如果钉钉机器人安全设置了关键字,则需要传入对应的关键字"key": None,# 如果钉钉机器人安全设置了签名,则需要传入对应的密钥"secret": None,# 钉钉群中要@人的手机号列表,如:[137xxx,188xxx]"atMobiles": [],# 是否@所有人"isatall": False
}

6、测试结果推送到企业微信群

如果要将测试结果推送到企业微信群,则在 settings.py 添加 WECHAT 配置即可。

WECHAT = {# 企业微信群ID"chatid": "",# 调用企业微信API接口的凭证"access_token": ""
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开发】视频集中存储/直播点播平台EasyDSS点播文件分类功能优化

视频推拉流EasyDSS视频直播点播平台,集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法&#xf…

【智慧工地源码】物联网和传感器技术在智慧工地的应用

物联网(IoT)和传感器技术在智慧工地中扮演着至关重要的角色。这些技术的应用,使得智慧工地能够实现对施工过程的精确监控、数据收集和分析,以及设备互联,从而提高工程效率、减少成本并改善工人的工作环境。 一、物联网…

9.13号作业

1> 将之前定义的栈类和队列类都实现成模板类 栈的模块类 #include <iostream> using namespace std;template <typename T> class Stack { private:T data[40]{0};T top-1; public:Stack (){cout<<"这是构造函数"<<endl;}int stack_e…

关于 Unity 连接 MuMu 模拟器上的 Unity Remote 5 的方法

在使用 Unity 开发 Android 的过程中&#xff0c;可以通过使用 Unity Remote 这个 app 来和真机连接&#xff0c;进而在真实环境下进行测试性能等工作&#xff0c;而本次则是由于其他问题引出的一个小坑&#xff0c;记录以备后续查询。 这次是由于在自学过程中遇到的一个工程&…

应用在Wi-Fi音箱中的国产高性能DSP音频处理芯片

WiFi音箱的工作原理是通过无线路由器&#xff0c;将音箱接入到外部网络当中&#xff0c;然后在通过手机、平板、电脑等设备连接音箱&#xff0c;通过一些多媒体协议将音乐推送到音箱当中进行播放&#xff0c;WiFi音箱具有着传输能力强&#xff0c;可同时连接多个设备进行播放等…

c\c++ windows自动打开cmd并进入mysql

每次不用可视化工具查看数据库的时候饭都要winr->cmd->mysql -u root -p->密码 虽然不麻烦但是多少也得消耗你几秒钟&#xff0c;秉承着时间就是金钱的观念 我决定通过windows模拟输入实现快速通过命令行查看mysql数据库 涉及到的知识: windows拉起进程&#xff0c;…

uniapp 微信小程序最新隐私弹窗更新方案,更新后无法登录问题解决方案

1&#xff0c;在manifest.json文件中的mp-weixin 节点下&#xff0c;添加&#xff1a;"__usePrivacyCheck__": true 2&#xff0c;在需要的页面配置隐私保护弹窗&#xff0c;或者直接写到首页也可以 <uni-popup ref"popusAuthorization" type"cen…

【目标检测】YOLOv8:快速上手指南

YOLOv8概述 YOLOv8是YOLOv5团队在今年新推出的一代YOLO版本&#xff0c;与前几代版本相比&#xff0c;其性能和速度差距如下图所示&#xff1a; 和其它版本不同的是&#xff0c;该仓库并非起名为YOLOv8&#xff0c;而是公司名ultralytics&#xff0c;因为他们想将此版本作为一…

RK3399 android7.1 实现双wifi功能 STA+AP

wifi模组&#xff1a; 主板使用的wifi模块为海华AW-NM43438W模组以及客户提供了一款USB接口的5G双频无线网卡RTL8821CU。 双wifi功能实现效果&#xff1a; 主板自带的wifi模组作为station正常连接外部wifi,USB接口的外接网卡作为AP&#xff08;热点&#xff09;供其他设备连接…

自动驾驶之高精地图介绍

高精地图 文章目录 高精地图前言什么是高精地图高精数据分发引擎1.3 名词解释1. ADAS(Advanced DriverAssistance System)2. 为什么需要高精数据的分发引擎 高精数据分发引擎的建设高精数据分发引擎与ADAS应用的关系高精数据分发引擎架构高精数据分发引擎的模型表达路网模型的抽…

IMAU鸿蒙北向开发-2023年9月5日学习日志

1. 5种调试方式 1.1 Previewer 在侧边 Previewer 选项卡内可以预览Entry。 如果要单独预览组件&#xff0c;可以在给组件加Preview 装饰器 1.2 Local Emulator&#xff08;本地模拟&#xff09; 1.3 Remote Emulator&#xff08;远程模拟&#xff09; 使用时需要登录华为开发…

机器学习开源工具BatteryML,一站式分析与预测电池性能

编者按&#xff1a;天下苦锂电池寿命久矣&#xff0c;时闻“开车出&#xff0c;推车回”&#xff0c;又闻“充电两小时&#xff0c;待机两分钟”&#xff0c;亦闻“气温骤降&#xff0c;请注意电池保暖”……随着以锂离子电池为动力源的产品&#xff0c;如手机、电脑、新能源汽…

python3对文件编码的转换处理

前言&#xff1a; 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 公司同事邀我一起给SQLSERVER 2008导数&#xff0c; 数据来源有高斯和ORACLE, 数据文件保存格式有UTF-8和GBK。 当我在做测试导入的时候发现S…

【再识C进阶2(下)】详细介绍指针的进阶——利用冒泡排序算法模拟实现qsort函数,以及一下习题和指针笔试题

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

2023备战秋招Java面试八股文合集

Java就业大环境仍然根基稳定&#xff0c;市场上有很多机会&#xff0c;技术好的人前景就好&#xff0c;就看你有多大本事了。小编得到了一份很不错的资源&#xff0c;建议大家可以认真地来看看以下的资料&#xff0c;来提升一下自己的核心竞争力&#xff0c;在面试中轻松应对面…

学习笔记|回顾(1-12节课)|应用模块化的编程|添加函数头|静态变量static|STC32G单片机视频开发教程(冲哥)|阶段小结:应用模块化的编程(上)

文章目录 1.回顾(1-12节课)2.应用模块化的编程(.c .h)Tips:添加函数头创建程序文件三步引脚定义都在.h文件函数定义三步bdata位寻址变量的使用 3.工程文件编写静态变量static的使用完整程序为&#xff1a;demo.c&#xff1a;seg_led.c:seg_led.h: 1.回顾(1-12节课) 一、认识单…

docker系列(3) - 常用软件安装

文章目录 3. docker安装常用软件3.1 安装nginx3.2 安装redis3.3 安装mysql3.4 部署springboot程序3.4.1 编写dockerfile3.4.2 构建镜像3.4.3 启动镜像 3. docker安装常用软件 3.1 安装nginx docker pull nginx#挂载启动 docker run -it -d \ --namenginx \ --networkpub_netw…

【计算机网络】什么是WebSocket?

目录 WebSocket简介协议优点使用场景 WebSocket WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信&#xff0c;位于OSI模型的应用层。 WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务器主动向客户端推送数据。在WebSocket API中&a…

Leecode1160: 拼写单词

直接使用一个哈希表存整体的结果&#xff0c;一个临时的哈希表每次算一遍&#xff0c;但是1是要设置标志位来判断最后是否正确并加上长度&#xff0c;2是千万要记得每次新建一个空间来存哈希表绝对不能不空间就等于&#xff0c;会出事&#xff01;&#xff01;

Copymonkey:AI生成营销广告文案

【产品介绍】 CopyMonkey.ai 是一家成立于2021年的创新型人工智能&#xff08;AI&#xff09;初创企业&#xff0c;专注于开发一款强大的AI写作助手。我们的产品旨在帮助用户以更高效且更自然的方式创作各种文本内容&#xff0c;无论是文章、博客、电子邮件、简历还是其他类型的…