HttpRunner辅助函数debugtalk.py

辅助函数debugtalk.py

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

操作步骤:

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

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

python 复制代码
# 调用 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

python 复制代码
# 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 测试步骤中使用

python 复制代码
# 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,"猫_百度搜索"]

实战案例

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

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

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

相关推荐
宇钶宇夕2 小时前
EPLAN 电气制图:建立自己的部件库,添加部件-加SQL Server安装教程(三)上
运维·服务器·数据库·程序人生·自动化
Thomas_YXQ5 小时前
Unity3D游戏内存优化指南
游戏·unity·职场和发展·性能优化·蓝桥杯·游戏引擎·unity3d
Y1nhl6 小时前
力扣_链表_python版本
开发语言·python·算法·leetcode·链表·职场和发展
一个 00 后的码农6 小时前
26考研物理复试面试常见问答问题汇总(2)电磁波高频面试问题,物理专业保研推免夏令营面试问题汇总
考研·面试·职场和发展
宇钶宇夕7 小时前
STEP 7 MicroWIN SMART V2.2 的详细安装步骤及注意事项
运维·服务器·程序人生·自动化
YuTaoShao19 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
天真小巫1 天前
2025.7.6总结
职场和发展
算法_小学生1 天前
LeetCode 75. 颜色分类(荷兰国旗问题)
算法·leetcode·职场和发展
alphaTao1 天前
LeetCode 每日一题 2025/6/30-2025/7/6
算法·leetcode·职场和发展
Owen_Q1 天前
Denso Create Programming Contest 2025(AtCoder Beginner Contest 413)
开发语言·算法·职场和发展