httprunner學習27-參數關聯時在 yaml 文件 int 和 str 數據類型轉換


前言

使用httprunner框架參數關聯的時候,最近遇到小伙伴們問的一個問題,上個接口返回的值是一個字符串類型(如: "123456"),下個接口要用到這個值,但是需傳int類型的 123456。

問題描述

假設上個接口返回的數據是如下格式,我們需要提取 key1 的值

"args": {
    "key1": "123456", 
    "sign": "abcdefg"
  }

在yaml文件里面,可以用 extract 關鍵字提取到 key1值,此時提取到的是字符串類型,下個接口需要用到key1的值,那么在yaml文件里面直接引用 $key1 的話,並不是我們想要的 int 類型的。
yaml 文件里面 可以用 !!int "123456" 把字符串轉成int類型,!!str 123456把數字轉字符串,但在這里行不通。
於是可以想到通過 debugtalk.py 寫個輔助函數解決。

debugtalk.py 輔助函數

在項目跟目錄新建 debugtalk.py 寫字符類型轉換的輔助函數

# debugtalk.py
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

def int_to_str(arg):
    return str(arg)


def str_to_int(arg):
    return int(arg)

參數關聯時引用函數 ${str_to_int($key1)}

# xxx.yml格式如下
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

-   config:
        name: str轉int
        variables: {}
        request:
            base_url: http://httpbin.org
-   test:
        name: 上個請求
        request:
            params:
                key1: "123456"
                sign: "abcdefg"
            method: GET
            url: /get
        extract:
        -   key1: content.args.key1
        validate:
        -   eq:
            - status_code
            - 200

-   test:
        name: 下個請求
        request:
            headers:
                Content-Type:  application/json
            json:
                username: admin
                password: 1111111*****
                key2: ${str_to_int($key1)}
            method: POST
            url: /post
        validate:
        -   eq:
            - status_code
            - 200

運行結果抓包查看

關於讀取csv文件數據類型轉換參考這篇https://www.cnblogs.com/yoyoketang/p/13711603.html


httprunner 2.x實戰教程點我 ->立即報名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM