Python开源项目:自动化测试工具HttpRunner的简单介绍(一)

发表于:2021-7-20 10:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:波小艺    来源:掘金

  HttpRunner是一个简单优雅但功能强大的 HTTP(S) 测试框架。以YAML或JSON格式定义测试用例,保障测试用例描述的统一性和可维护性。程序执行的时候,会处理用户输入的yml/json文件并基于模板生成测试文件。最终通过pytest.main([])的方式去执行生成的用例文件。用户只需要通过json/yml文件去维护用例即可,不需要关心程序如何处理json/yml文件,如何生成测试文件等,简单快速通过pytest运行用例,并获取详细的测试报告。

  主要特征:
  ·以YAML或JSON格式定义测试用例,保障测试用例描述的统一性和可维护性
  testsuite > testcase > teststep(api)
  支持设计一系列的测试场景,每个测试场景可包含多个teststep。
  支持参数化设计
  支持variables/ extract/ validate/hooks机制(使用jmespath ,提取和验证json响应)
  支持添加逻辑运算辅助函数(debugtalk.py),在测试脚本中实现复杂的动态逻辑
  ·在HAR 支持下记录并生成测试用例。(使用charles去抓取请求,生成的用例文件可能还需要手动处理)
  ·使用pytest执行测试文件 ,数百个插件随时可用。使用allure ,测试报告可以非常强大。
  run_testcase():处理请求前的数据
  __run_step() > __run_step_request(使用requests发起api请求并导出其他用例引用的变量(__step_datas))
  ·通过重复使用locust ,您可以进行性能测试,而无需进行额外的工作。
  ·支持CLI命令,与CI/CD完美结合。

  工作流程
  想要了解其工作流程,最好的办法就是使用debug模式,那在这里应该如何使用debug来参透httprunner的执行流程呢?跟着我来看下:

  调试技巧
  使用pycharm进行调试,且python环境使用Virtualenv进行管理
  ·安装:pip install httprunner
  ·在/venv/bin/ 目录下找到hrun文件

  编辑hrun文件,为sys.argv赋值。第一个是hrun的绝对路径,第二个是用例的绝对路径
  在sys.exit(main_hrun_alias())这里打个断点,那么就可以开始愉快的调试之旅了~
# -*- coding: utf-8 -*-
import re
import sys
from httprunner.cli import main_hrun_alias
if __name__ == '__main__':
    sys.argv = ['/Users/boyizhang/PycharmProjects/apitest/venv/bin/hrun', '/Users/boyizhang/PycharmProjects/apitest/hruntests/testcases/testheader.yml']

    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main_hrun_alias())

  工作流
  调试日志:
  进入main_hrun_alias()中,并为sys.argv的列表插入新的一项“run”(因为我们是执行用例)。

  进入main(),因为我们含有“run”,所以现在开始执行用例。

  进入main_run(extra_args),根据extra_args(yml/json路径)将yml/json文件生成python文件(测试文件)。

  进入main_make(),判断路径是否存在。

  进入 __make() ,加载yml/json文件,并准备数据(按照数据的优先级进行复制,从低到高)。

  进入make_testcase(),将yml/json文件基于模板生成对应的py文件。

  最后回到main_run()方法,继续执行main_make()以下的代码,可以发现,程序最终将创建的py文件交给pytest.main()来执行。

  上面演示了用例文件从yml/json到py文件的生成流程。接下来可以对生成的py文件继续调试。
  这里我做了一个比较简单的演示,小伙伴们如果有兴趣,可以根据我的思路继续你的调试之旅哦。



      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号