Httprunner参数化的案例演示(单个用例)

目录

 

1.用例准备

1.1生成用例

1.2用例参数化

1.3自定义函数

2.执行用例


1.用例准备

1.1生成用例

1.通过fiddler捕捉get_token并转换文件格式为.yml。操作方法见HttpRunner使用文档案例录制并转换生成测试用例过程出现的问题及解决办法

2.将用例放到已生成好的测试用例结构目录中,目录的生成见:Httprunner项目文件和测试用例组织

3.为了阅读方便,可以使用Notepad++或者PyCharm来打开此用例文件。

4.打开后的原始文件如下所示,并在脚本中加了一些注释:

config:
    name: testcase description #必填,测试用例名称,测试报告以此作为标题
    variables: {} #非必填,全局变量,作用域为整个testcase
teststeps:
-   name: /api/get-token #必填,测试步骤名称
    request: #必填,测试步骤请求信息
        headers: #请求头中的信息
            Content-Type: application/json
            Postman-Token: cc0a84c0-7c4c-4634-8d36-7bd58563045a
            User-Agent: PostmanRuntime/7.24.0
            app_version: 2.8.6
            device_sn: FwgRiO7CNA50DSU
            os_platform: ios
            user_agent: iOS/10.3
        json:           #请求体body中的信息
            sign: 9c0c7e51c91ae963c833a4ccbab8d683c4a90c98
        method: POST            #请求类型
        url: http://127.0.0.1:5000/api/get-token #请求地址
    validate:
    -   eq:
        - status_code
        - 200
    -   eq:
        - headers.Content-Type
        - application/json
    -   eq:
        - content.success
        - true
    -   eq:
        - content.token
        - dKbNLKokkvNkq8hj

1.2用例参数化

1.现在我们需要将device_sn、app_version 和 os_platform 这三个参数和请求体中的sign来进行参数化

首先,在config中的variables模块申明变量、并赋值;

其次,在用例部分引用变量($var)或调用函数赋值(${func($var)});

再次,将自定义函数写在debugtalk.py中。

最后

debugtalk.py函数中定义相关变量和参数,详细内容参见httprunner中文使用手册的hook机制

此文件在自动生成的结果目录的根目录中:

    

参数化后的用例如下所示:

config:
    name: 获得 token with  $os_platform, $app_version #必填,测试用例名称,测试报告以此作为标题
    variables: #非必填,声明全局变量,并赋值,作用域为整个testcase
        device_sn: ${gen_random_string(15)} #生成 15 位长度的随机字符串并赋值给 device_sn,函数在debugtalk.py中定义
        os_platform: 'ios'
        app_version: '2.8.6'

teststeps:
-   name: /api/get-token #必填,测试步骤名称
    request: #必填,测试步骤请求信息
        headers: #请求头中的信息
            Content-Type: application/json
            Postman-Token: cc0a84c0-7c4c-4634-8d36-7bd58563045a
            User-Agent: PostmanRuntime/7.24.0
            app_version: $app_version
            device_sn: $device_sn
            os_platform: $os_platform
            user_agent: iOS/10.3
        json:           #请求体body中的信息
            sign: ${get_sign($device_sn, $os_platform, $app_version)} #根据签名算法生成 sign 值,函数在debugtalk.py中定义
        method: POST            #请求类型
        url: http://127.0.0.1:5000/api/get-token #请求地址
    validate:
    -   eq:
        - status_code
        - 200
    -   eq:
        - headers.Content-Type
        - application/json
    -   eq:
        - content.success
        - true

1.3自定义函数

加入自定义函数后的debugtalk.py文件如下所示:

import os
import random
import string
import time
import hmac
import hashlib

SECRET_KEY = "DebugTalk"

def sleep(n_secs):
    time.sleep(n_secs)
def gen_random_string(str_len): #生成 15 位长度的随机字符串并赋值给 device_sn
    random_char_list = []
    for _ in range(str_len):
        random_char = random.choice(string.ascii_letters + string.digits)
        random_char_list.append(random_char)

    random_string = ''.join(random_char_list)
    return random_string

def get_sign(*args): #根据签名算法生成 sign 值
    content = ''.join(args).encode('ascii')
    sign_key = SECRET_KEY.encode('ascii')
    sign = hmac.new(sign_key, content, hashlib.sha1).hexdigest()
    return sign

2.执行用例

执行hrun D:\httprunner\Api_api\testcases\get_token_new.yml,执行此单个用例查看结果

执行完成后,到reports目录下可查看输出的报告文件

打开报告文件查看到的内容如下:

发布了8 篇原创文章 · 获赞 27 · 访问量 1500

猜你喜欢

转载自blog.csdn.net/niuhaoyuan/article/details/105390679