HttpRunner3.x(4)测试用例结构

文章介绍了httprunner中的测试用例结构,包括测试集合testsuite、测试用例testcase和测试步骤teststep。它强调了yaml文件格式在编写测试用例中的应用,并提供了一个登录接口的测试用例示例,详细解释了config部分的各个配置选项以及teststeps中的请求设置、变量提取和断言验证。此外,还展示了如何引用其他测试用例以及测试集合的组织方式。
摘要由CSDN通过智能技术生成

在httprunner中,测试用例有三层结构,分别是

1.测试集合testsuite,对应一个目录,包含一个或多个测试用例文件。

2.测试用例testcase,对应单个文件,可以是yaml/json/python文件,包含一个或多个测试步骤。

3.测试步骤teststep,单个步骤。

一般采用yaml文件格式来写用例。

yaml文件的用例格式如下:

config:
    name: xxx
    variables:              # 配置变量(config variables)
        varA: "configA"
        varB: "configB"
        varC: "configC"
    parameters:             # 参数变量(parameter variables)
        varA: ["paramA1"]
        varB: ["paramB1"]
    base_url: "https://postman-echo.com"
    verify: False
    export: ["foo3"]

teststeps:
-
    name: step 1
    ...
-
    name: step 2
    ...

实例

为了介绍yaml文件的写法,这里利用网站https://pity.fun/来进行测试。

访问网址,输入账号密码打开F12点击登录,可以看到登录接口。

https://api.pity.fun/auth/login post方法 请求体为json

{"username":"tester","password":"tester"}

响应体为json

{"code":0,"msg":"登录成功","data":{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOye8","user":{"id":6,"username":"tester","name":"tester","email":"55497569@qq.com","role":1,"phone":"11111111111","created_at":"2022-12-30 16:34:55","updated_at":"2023-03-13 15:00:09","deleted_at":0,"update_user":6,"last_login_at":"2023-03-16 22:39:26","avatar":"https://static.pity.fun/avatar/user_6.png","is_valid":true},"expire":1679236766.573221}}

login.yml

在testcase文件夹下创建login.yml,内容如下


config:
    name: "登录成功"
    variables:
        username: tester
        password: tester
        expect_foo2: config_bar2
    base_url: "https://api.pity.fun"
    verify: False
    export:
        - token

teststeps:
-
    name: 登录成功
    variables:
        foo1: bar1
    request:
        method: POST
        url: /auth/login
        headers:
            Content-Type: "application/json"
        json:
            {"username":"$username","password":"$password"}
    extract:
        token: body.data.token
    validate:
        - eq: ["status_code", 200]
        - eq: [body.code,0]
        - eq: [body.msg,"登录成功"]

复制文件的相对路径,打开terminal,输入

hrun 文件名 -s

可以看到有一条命令执行通过

接下来介绍这个yaml文件的内容

config(必须)

每个测试用例都必须有config部分。并且只能有一个config部分。

name(必须)

测试用例的名称,将在log和报告中展示。

base_url(可选)

测试用例中的通用Host,例如"https://api.pity.fun"。如果base_url被指定,测试步骤中的url只能写相对路径。当要在不同环境下测试时,这个配置非常有用。

variables(可选的)

定义的全局变量,作用域为整个用例。每个测试步骤都可以引用config variables。也就是说,step variables 优先级高于 config variables.

引用变量时,采用$变量名引用,如实例的账号名和密码,就是通过变量传入的。

parameters(可选的)

全局参数,用于实现数据化驱动,作用域为整个用例。这个后续再写。

verify(可选的)

指定是否验证服务器的TLS证书。如果我们想记录测试用例执行的HTTP流量,这将特别有用,因为如果没有设置verify或将其设置为True,则会发生SSLError。

export(可选的)

指定输出的测试用例变量。将每个测试用例看作一个黑盒,config variables是输入变量,config export是输出变量。当一个测试用例在另一个测试用例的步骤中被引用时,config export将被提取并在随后的测试步骤中使用。

在实例中,导出了token,如果下一个接口需要用到token,则可以使用。(注意不能随便用,必须两个接口在一个测试用例文件中才可以)

testcase测试用例

teststeps

每个测试用例都有1个或多个测试步骤(List[step]),每个测试步骤对应一个API请求或其他用例的引用。

name(必须)

name用来定义测试步骤 name,将出现在log和测试报告中。

variables(可选的)

测试步骤中定义的变量,作用域为当前测试步骤。

如果想在多个测试步骤中共享变量,需要在config variables中定义。

测试步骤中的变量,会覆盖config variables中的同名变量。

request(必须)
METHOD(必须)

设置http方法,支持RestFul中的所有http方法(GET/POST/PUT/PATCH/DELETE/) ,相当于requests.request 中的method。

URL(必须)

设置Url,如果base_url在config中设置了,url只能是相对路径部分。相当于requests.request 中的url。

PARAMS(可选)

设置Url的query,相当于requests.request 中的params,用于当请求方法为GET方法时。

HEADERS(可选)

设置请求的headers,相当于requests.request 中的headers。如实例中的请求头

Content-Type: "application/json"
COOKIES(可选)

设置Http请求的cookies,相当于requests.request 中的cookies。

DATA(可选)

设置http请求的Body,相当于requests.request 中的data。

JSON(可选)

设置http请求json格式的body,相当于requests.request 中的json。

实例中请求体就是json格式

extract(可选)

从当前 HTTP 请求的响应结果中提取参数,并保存到参数变量中(例如token),后续测试用例可通过$token的形式进行引用。

原理:利用jmespath 提取Json response body的内容。

实例中从body.data.toke提取出token,并命名为token。

validate(可选)

测试用例中定义的结果校验项,作用域为当前测试用例,用于实现对当前测试用例运行结果的校验。

原理:用jmespath 提取Json response的内容,并进行断言校验。

实例中的断言了响应状态码为200,并且断言了响应体的两个body中的code和msg。

hooks(可选)

测试步骤中引用测试用例

新建文件query.yml,写入如下内容并运行,可以看到运行了两个步骤且成功。

这个用例有两个步骤,其中第一个步骤引用了登录文件。

第二个步骤使用$token的方法,调用了步骤一导出的token变量。

在引用测试用例的步骤中,可以用变量,注意不能用其他如断言关键字,导出


config:
    name: "查询用户信息"
    base_url: "https://api.pity.fun"

teststeps:
-   name: 登录成功
    testcase: ./testcases/login.yml
-
    name: 查询用户信息
    request:
        method: GET
        url: /auth/query?token=$token
    validate:
        - eq: ["status_code", 200]
        - eq: [body.code,0]
        - eq: [body.msg,"操作成功"]

variables

跟request中的variables一样

testcase

指定引用的测试用例

export

从引用的测试用例中提取的变量,该变量在后面的test steps中可以引用

testsuite测试集合

测试集合是一个目录,其下的每个文件都是一个测试集

如下例,使用关键字testcases定义的就是测试集合,测试集合下的是一个个测试用例。

tesecase中引用测试用例文件。

这里比在teststeps中方便的是,可以写extract和validate。

需要注意的是,在testcases里,只能引用其他文件,不支持写request关键字

config:
    name: "查询用户信息"
    base_url: "https://api.pity.fun"

testcases:
-   name: 登录成功
    testcase: ./testcases/login.yml
    extract:
        token: body.data.token
    validate:
        -   eq: [ "status_code", 200 ]
        -   eq: [ body.code,0 ]
        -   eq: [ body.msg,"登录成功" ]
-
    name: 查询用户信息
    testcase: ./testcases/query_custom.yml
    validate:
        - eq: ["status_code", 200]
        - eq: [body.code,0]
        - eq: [body.msg,"操作成功"]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值