当前位置: 首页 > news >正文

06 接口自动化-框架封装思想建立之httprunner框架(下)

文章目录

      • 一、httprunner如何实现数据驱动
        • 第一种:直接在脚本里面指定参数列表,最简单。适合于参数比较少的情况。
        • 第二种:使用CSV文件,适合于参数比较大的情况。
        • 第三种方式:使用函数生成数据,适用于数据变化大的情况
      • 二、httprunner文件上传
      • 三、如何生成allure报告
      • 四、接口自动化框架文件对应关系

一、httprunner如何实现数据驱动

3.X开始,使用parameters定义数据源。应用于测试用例层。

第一种:直接在脚本里面指定参数列表,最简单。适合于参数比较少的情况。
config:name: get tokenparameters:appid-secret-grant_type-assert_str:- ["wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","client_credential","access_token"]- ["","e40a02f9d79a8097df497e6aaf93ab80","client_credential","errcode"]- ["wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","","errmsg"]
teststeps:
-   name: get tokenapi: api/wx_get_token.yml
第二种:使用CSV文件,适合于参数比较大的情况。

yaml 文件:

config:name: get tokenparameters:appid-secret-grant_type-assert_str: ${P(data/get_token_data.csv)}
teststeps:
-   name: get tokenapi: api/wx_get_token.yml

get_token_data.csv:

appid,secret,grant_type,assert_str
"wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","client_credential","access_token"
"","e40a02f9d79a8097df497e6aaf93ab80","client_credential","errcode"
"wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","","errmsg"

注意:

  • 1.csv文件中第一行必须放参数名称,并且参数名称必须和测试用例里面的名称一致。
  • 2.csv文件中第二行放数据,每一组数据占一行。
  • 3.parameters指定的参数顺序可以不一致,个数也可以不一致。
第三种方式:使用函数生成数据,适用于数据变化大的情况

debugtalk.py:

# 获取数据
def get_token_data():return [{"appid": "wx74a8627810cfa308", "grant_type": "client_credential", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str":"access_token"},{"appid": "", "grant_type": "client_credential", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str": "errcode"},{"appid": "wx74a8627810cfa308", "grant_type": "", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str": "errmsg"}]

yaml 文件:

config:name: get tokenparameters:appid-secret-grant_type-assert_str: ${get_token_data()}
teststeps:
-   name: get tokenapi: api/wx_get_token.yml

二、httprunner文件上传

前提条件: 需要安装如下两个包

  • pip install requests_toolbelt filetype
  • pip install "httprunner[upload]"

注意:上传文件需要加上upload
yaml 文件:

config:name: testcase descriptionvariables:access_token: $access_tokenfile_path: F:\Pycharm\TestAPI\httpframe\data\htr.pngbase_url: ${ENV(test_url)}
teststeps:
-   name: /cgi-bin/media/uploadimgrequest:upload:media: $file_pathheaders:Content-Type: multipart/form-data; boundary=--------------------------820438713549970031981494Postman-Token: fc7a57ba-802c-4c99-9226-15db86f9bd99User-Agent: PostmanRuntime/7.44.0method: POSTparams:access_token: $access_tokenurl: /cgi-bin/media/uploadimgvalidate:-   eq:- status_code- 200-   eq:- headers.Content-Type- text/plain-   ne:- body.url- ""

三、如何生成allure报告

  • 第一步
    • 1.官网下载allure文件
    • 2.下载之后解压到非中文的目录
    • 3.把bin路径配置到系统变量path中:E:\allure-2.13.7\bin (注意分号不要是中文的)
  • 第二步:
    • 安装allure报告:pip install allure-pytest
    • 验证:allure --version
    • 注意:可能需要重启 pycharm。
  • 第三步:
    • 1.在reports目录下生成temps目录,并且在temps目录下生产临时的json格式的临时报告
      os.system("hrun testsuites/test_suites.yml ‐‐alluredir=reports/temps ‐‐clean‐alluredir")
      加上–clean-alluredir表示:每执行一次把原来的清除。
    • 2.根据临时json报告生成allure报告
      os.system("allure generate reports/temps ‐o reports/allures ‐‐clean")
      加上–clean表示:每执行一次把原来的清除。

四、接口自动化框架文件对应关系

一个接口对应一个yaml文件,一个yaml文件对应一个csv文件。

  • 优点:相对来说比较成熟,唯一的,不需要写脚本。
  • 缺点:规则太难了,小心翼翼,报错机制不完善。有些功能不齐全。
http://www.xdnf.cn/news/577747.html

相关文章:

  • 算法--js--电话号码的字母组合
  • Manus与DeepSeek 的区别
  • 从0开始学linux韦东山教程第四章问题小结(2)
  • Java异步编程利器:CompletableFuture 深度解析与实战
  • 【C++ Primer 学习札记】函数传参问题
  • 轻量级高性能Rust HTTP服务器库Hyperlane,助力现代网络服务开发
  • C++:vector容器
  • 心知天气 API 获取天气预报 2025/5/21
  • QML定时器Timer和线程任务WorkerScript
  • 大模型评测与可解释性
  • Day 27 训练
  • Linux中的文件介绍
  • 通过美图秀秀将多张图片合并
  • 【UEFI实战】BIOS编译过程中报错“无法解析的外部符号memcpy”
  • 七: NumPy的使用
  • vue+srpingboot实现多文件导出
  • Unity中GPU Instancing使用整理
  • Python训练Day30
  • 第3周作业-1层隐藏层的神经网络分类二维数据
  • MQTT报文介绍
  • Linux内存分页管理详解
  • Jsoup解析商品信息具体怎么写?
  • 阿里发布扩散模型Wan VACE,全面支持生图、生视频、图像编辑,适配低显存~
  • FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现
  • 《P1433 吃奶酪》
  • MCU开发学习记录19* - CAN学习与实践(HAL库) - 定时传输、触发传输和请求传输(轮询与中断实现) -STM32CubeMX
  • Python 代码缩进与结构化编程:从基础到风格规范
  • Robotaxi新消息密集释放,量产元年来临谁在领跑?
  • [Java恶补day2] 49. 字母异位词分组
  • 【SW】从3D模型导出dxf图纸