HttpRunner辅助函数debugtalk.py

news2024/11/18 11:19:41

辅助函数debugtalk.py

  Httprunner框架中,使用yaml或json文件进行用例描述,无法做一些复杂操作,如保存一些数据跨文件调用,或者实现一些复杂逻辑判断等,为了解决这个问题,引入了debugtalk.py辅助函数来进行一些复杂操作。

操作步骤:

1.在项目根目录下新建debugtalk.py,在这个py文件中编写你要实现的逻辑代码函数,如下图:

2.在yaml或json中使用${函数名()}引用对应的函数,如下图:

# 调用 debugtalk.py文件中的函数
- config:
    name: 百度主页
    base_url: https://www.baidu.com
    output:
      - title
 
- test:
    name: 百度搜索
    request:
      url: /s
      method: GET
      headers:
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
        Accept-Encoding: gzip, deflate, br
        Accept-Language: zh-CN,zh;q=0.9
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
      params:
        wd: ${get_value()}
    extract:
      - title: <title>(.+?)</title>
    validate:
      - eq: [$title,"猫_百度搜索"]

hook机制

  Httprunner 框架中的 hook 机制相当于unittest框架中的 setup , teardown 函数,用来进行测试用例执行之前的环境初始化以及测试用例执行完毕之后的环境清理操作。

 httprunner 中的 hooks 机制可以用在测试用例层级也可以用在测试步骤层级,其关键字是:setup_hooks、teardown_hooks

使用步骤:

1.一般在debugtalk.py中编写相应的初始化及环境清理函数

2.在测试用例文件中的 config 及test 中根据需要加入setup_hooks、teardown_hooks

# hook 是完成初始化和清理工作的
- config:
    name: 百度主页
    base_url: https://www.baidu.com
    output:
      - title
    # 放到用例层级
    setup_hooks:
      - ${setup_case()}
    teardown_hooks:
      - ${teardown_case()}
 
- test:
    name: 百度搜索
    # 放到步骤层级
    setup_hooks:
      - ${setup_start(我是传入的参数)}
    teardown_hooks:
      - ${teardown_close(我是传入的参数)}
    request:
      url: /s
      method: GET
      headers:
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
        Accept-Encoding: gzip, deflate, br
        Accept-Language: zh-CN,zh;q=0.9
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
      params:
        wd: ${get_value()}
    extract:
      - title: <title>(.+?)</title>
 
    validate:
      - eq: [$title,"猫_百度搜索"]

忽略跳过用例:

  Httprunner框架中使用和unittest类似的方式进行忽略跳过用例,关键字有3个:

skip:无条件跳过用例

skipIf:条件成立,返回值为True时候成立(非0、非空等为true)

kipUnless:条件不成立,返回值为False时候成立(0、空等为false)

上述关键字只能在test 测试步骤中使用

# skip是用来忽略跳过测试用例
- config:
    name: 百度主页
    base_url: https://www.baidu.com
    output:
      - title
 
- test:
    name: 百度搜索
    # 忽略跳过用例只能在测试步骤中使用
    skip: 无条件跳过
#    skipIf: True         # 条件为 True 时跳过
#    skipUnless: False    # 条件为 False 时跳过
    request:
      url: /s
      method: GET
      headers:
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
        Accept-Encoding: gzip, deflate, br
        Accept-Language: zh-CN,zh;q=0.9
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
      params:
        wd: 猫
    extract:
      - title: <title>(.+?)</title>
 
    validate:
      - eq: [$title,"猫_百度搜索"]

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

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

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

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

相关文章

nccl 源码安装与应用示例 附源码

1&#xff0c; 官方下载网址 注意&#xff0c;本文并不使用nv预编译的包来安装&#xff0c;仅供参考&#xff1a; NVIDIA Collective Communications Library (NCCL) | NVIDIA Developer 2&#xff0c;github网址 这里是nv开源的nccl源代码&#xff0c;功能完整&#xff0c;不…

使用ffmpeg+flv.js + websokect播放rtsp格式视频流

对于rtsp的视频流网上有很多种的解决方案&#xff0c;但是大的趋势还是利用ffmpeg的工具进行rtsp的视频解析进行一个推流&#xff0c;我最终选择bilibili开源的flv.js&#xff0c;代码十分的简单全部都在底层封装好了。实现的方式也比较容易理解&#xff0c;ffmpeg进行rtsp的视…

计算机Java项目|基于SpringBoot+Vue的学生选课管理系统

项目编号&#xff1a;L-BS-GX-12 一&#xff0c;环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 二&#xff0c;项目简介 基于SpringBootVue的学生选课…

Maven之依赖的传递

问题导入 1. 依赖传递 A依赖B&#xff0c;B依赖C&#xff0c;A是否依赖于C呢&#xff1f;–A依赖于C 依赖具有传递性 路径优先&#xff1a;当依赖中出现相同的的资源时&#xff0c;层级越深&#xff0c;优先级越低&#xff0c;层级越浅&#xff0c;优先级越高 声明优先&…

Prometheus插件安装(cadvisor)

简介 当docker服务数量到一定程度&#xff0c;为了保证系统的文档&#xff0c;我们就需要对docker进行监控。一般情况下我们可以通过docker status命令来做简单的监控&#xff0c;但是无法交给prometheus采集&#xff0c;因此谷歌的cadvisor诞生了。cadvisor不仅可以轻松收集到…

Jmeter接口测试响应数据中文显示为Unicode码的解决方法

问题&#xff1a;使用jmeter测试接口&#xff0c;返回响应数据汉字显示为Unicode 解决结果&#xff1a; 解决过程&#xff1a; 1.修改jmeter配置文件中的默认编码 在Jmeter的安装路径下打开bin文件夹下的jmeter.properties文件&#xff0c;搜索关键词default.encoding定位到语句…

Redis偶发Cannot determine a partition for slot报错问题

Redis偶发Cannot determine a partition for slot报错问题 一、背景二、问题定位1、报错位置2、lettuce定时刷新任务3、本地缓存masterCache先清理后写入的问题 三、解决方案&#xff1a;版本升级 一、背景 线上系统&#xff08;springboot&#xff09;经常报错Cannot determi…

Python小细节之Gui图形化界面库tkinter学习

敲打计数脚本学TKinter 引言开整选择决定难易了解她使用她运行效果 结尾 引言 我的爬取表情包的爬虫文件写好了 运行 输入关键词就可以得到对应的 表情包 我也通过pyinstall 打包了 但是很丑 就只有一个黑box 我是新手 所以我知道 这对于普通人来说 不友好 且在使用的过程中 …

自定义列表里面实现多选功能

需求 我们在开发过程中有时候会遇到列表里面会有多选&#xff0c;然后列表样式也要进行自定义。这里我们如果直接使用ElementUI组件el-table表格的时候这里实现起来可能比较复杂不方便&#xff0c;我们这里手写自定义一下列表里面多选的功能。 实现效果如下图所示&#xff1a…

二叉搜索树与双向链表

解题思路一&#xff1a; /** public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeNode(int val) {this.val val;} } */ // 一定要用自己的理解真正弄出来才行&#xff0c;否则没有用&#xff01; // 再次提醒&#xff0c;计算机这种工科…

【Python案例实战】水质安全分析及建模预测

一、引言 1.水资源的重要性 水是生命之源,是人类生存和发展的基础。它是生态系统中不可或缺的组成部分,对于维系地球上的生命、农业、工业、城市发展等方面都具有至关重要的作用。 2.水质安全与人类健康的关系 水质安全直接关系到人类的健康和生存。水中的污染物和有害物…

C# OpenCvSharp DNN Gaze Estimation

目录 介绍 效果 模型信息 项目 代码 frmMain.cs GazeEstimation.cs 下载 C# OpenCvSharp DNN Gaze Estimation 介绍 训练源码地址&#xff1a;https://github.com/deepinsight/insightface/tree/master/reconstruction/gaze 效果 模型信息 Inputs ----------------…

正则表达式解析与应用:深度剖析正则表达式的威力

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

pytorch机器学习各种激活函数总结(不完整学习更新中~)

pytorch各种激活函数总结 0.思维导图预览1. ReLU函数1.1 改进版ReLU6函数 2. Sigmoid函数3. Softmax函数4. Tanh函数5.&#xff08;学习后更新&#xff09; 0.思维导图预览 1. ReLU函数 ReLU&#xff08;Rectified Linear Unit&#xff09;线性整流函数 其公式为&#xff1a; …

常用API(String,StringBuilder,StringJoiner)

文章目录 1.API1.1API概述1.2如何使用API帮助文档 2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1号的作用2.5.2equals方法的作用 2.6用户登录案例2.6.1案例需求2.6.2代码实现 2.7遍历字符串案例2.7.1案…

软件测试|SQL AND和OR运算符解析

简介 在SQL&#xff08;Structured Query Language&#xff09;中&#xff0c;AND和OR是两个常用的逻辑运算符。它们用于组合条件来构建复杂的查询语句&#xff0c;帮助我们更精确地过滤和检索数据。本文将详细介绍SQL中的AND和OR运算符&#xff0c;包括其语法、用法以及使用时…

数据结构学习 jz63股票的最大利润

关键词&#xff1a;动态规划 滚动数组优化 这题不要被动态规划吓到了&#xff0c;其实很简单。 用时16min 题目&#xff1a; 思路&#xff1a; 最大利润的实现办法&#xff1a;在最低的时候买入&#xff0c;在最高的时候卖出。 dp状态&#xff1a; dp[i]第i天如果卖出的最…

uniapp中组件库的Checkbox 复选框 的丰富使用方法

目录 #平台差异说明 #基本使用 #自定义形状 #禁用checkbox #自定义形状 #自定义颜色 #横向排列形式 #横向两端排列形式 API #Checkbox Props #CheckboxGroup Props #CheckboxGroup Event 复选框组件一般用于需要多个选择的场景&#xff0c;该组件功能完整&#xff…

STM32疑难杂症

1.keil的奇怪问题 创建的数组分配内存到0x10000000地址的时候,数据总是莫名其妙的出现问题,取消勾选就正常了 stm32f407内部有一个CCM内存,这部分内存只能由内核控制,任何外设都不能够进行访问。这样问题就来了,如果使用keil5进行编程时勾选了这个选项(下图),则编译的…

八、Lua脚本详解—— 超详细操作演示!

八、Lua脚本详解 —— 超详细操作演示&#xff01; 八、Lua脚本详解8.1 Lua 简介8.2 Linux 系统的Lua8.2.1 Lua 下载8.2.2 Lua 安装8.2.3 Hello World 8.3 Win 系统的Lua8.4 Lua 脚本基础8.4.1 注释8.4.2 数据类型8.4.3 标识符8.4.4 运算符8.4.5 函数8.4.6 流程控制语句8.4.7 循…