httprunner3.x的快速上手及基础概念(一)

本文介绍了HttpRunner 3.x的快速上手,包括脚手架创建、运行及基础概念。讲解了项目结构、测试用例格式(YAML, JSON, Python)、变量优先级、环境变量的使用以及hook机制。强调了测试用例的独立性和数据驱动测试的重要性,同时提到了如何在debugtalk.py中定义辅助函数和管理环境变量。" 130275481,15135613,C++操作XML:解析、修改与保存,"['XML处理', 'C++编程', '数据结构']
摘要由CSDN通过智能技术生成

脚手架创建与运行

$  httprunner startproject  [project_name]  #指定新的项目名称

例如:

 $ httprunner startproject demo

运行:

$ hrun demo

 基础概念

 一、名称解释 

teststep(测试步骤):每一个测试步骤应该就对应一个 API 的请求描述

testcase(测试用例):为了测试某个特定的功能逻辑而精心设计的,并且至少包含如下几点:

  • 明确的测试目的(achieve a particular software testing objective)
  • 明确的输入(inputs)
  • 明确的运行环境(execution conditions)
  • 明确的测试步骤描述(testing procedure)
  • 明确的预期结果(expected results)

对应地,HttpRunner 的测试用例描述方式进行如下设计:

  • 测试用例应该是完整且独立的,每条测试用例应该是都可以独立运行的;在 HttpRunner 中,每个 YAML/JSON 文件对应一条测试用例。
  • 测试用例包含 测试脚本 和 测试数据 两部分:
    • 测试用例 = 测试脚本 + 测试数据
    • 测试脚本 重点是描述测试的 业务功能逻辑,包括预置条件、测试步骤、预期结果等,并且可以结合辅助函数(debugtalk.py)实现复杂的运算逻辑;可以将 测试脚本 理解为编程语言中的 类(class);
    • 测试数据 重点是对应测试的 业务数据逻辑,可以理解为类的实例化数据;
    • 测试数据 和 测试脚本 分离后,就可以比较方便地实现数据驱动测试,通过对测试脚本传入一组数据,实现同一业务功能在不同数据逻辑下的测试验证。

testsuite(测试用例集) :测试用例集 是 测试用例 的 无序 集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的。

 如果确实存在先后依赖关系怎么办,例如登录功能和下单功能。正确的做法应该是,在下单测试用例的前置步骤中执行登录操作。

config:
    name: "request methods testcase: reference testcase"

teststeps:
-
    name: step1
    testcase: testcases/login.yml

-
    name: step2
    api: api/add_cart.yml

-
    name: step3
    api: api/make_order.yml

测试场景: 测试用例的无序集合

  • 接口
  • 测试用例集
  • 参数
  • 变量
  • 测试脚本(YAML/JSON)
  • debugtalk.py
  • 环境变量

二、 项目根目录

基于约定大于配置的原则,每个项目有且只有一个debugtalk.py,该文件拥有多种功能。

  • 作为项目根路径的锚,测试用例中的相对路径(例如引用测试用例或CSV文件)都基于此根路径。
  • 存储自定义的python函数,在测试用例中调用的函数均在此文件中定义

 三、变量优先级

有几种不同类型的变量,优先级可能会令人困惑。 避免混淆的最好方法是使用不同的变量名。 但是,如果必须使用相同的变量名,则应该了解优先级策略。

testcase(测试用例)

config:
    name: xxx
    variables:              # 配置变量(config variables)
        varA: "configA"
        varB: "configB"
        varC: "configC"
    parameters:             # 参数变量(parameter variables)
        varA: ["paramA1"]
        varB: ["paramB1"]

teststeps:
-
    name: step 1
    variables:              # 测试步骤变量(step variables)
        varA: "step1A"
    request:
        url: /$varA/$varB/$varC # varA="step1A", varB="paramB1", varC="configC"
        method: GET
    extract:                # 提取变量(extract variables)
        varA: body.data.A   # 假设 varA="extractVarA"
        varB: body.data.B   # 假设 varB="extractVarB"
-
    name: step 2
    varialbes:
        varA: "step2A"
    request:
        url: /$varA/$varB/$varC # varA="step2A", varB="extractVarB", varC="configC"
        method: GET

变量优先级:

  • 测试步骤变量>提取变量>参数变量>配置变量

step variables > extract variables > paramrters variables> config variables   

testsuite(测试套件)

config:
    name: xxx
    variables:                  # testsuite config variables
        varA: "configA"
        varB: "configB"
        varC: "configC"

testcases:
-
    name: case 1
    variables:                  # testcase variables
        varA: "case1A"
    testcase: /path/to/testcase1
    export: ["varA", "varB"]    # export variables
-
    name: case 2
    varialbes:                  # testcase variables
        varA: "case2A"
    testcase: /path/to/testcase2

在测试套件中,变量优先级如下:

测试用例变量 >输出用例变量>测试套件变量> 被引用用例配置变量

 testcase variables  >  export variables >  testsuite config variables > referenced testcase config variables

 四、项目结构

 文件类型说明

  • debugtalk.py(可选):存储项目中逻辑运算辅助函数
    • 该文件存在时,将作为项目根目录定位标记&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值