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目錄下可查看輸出的報告文件

打開報告文件查看到的內容如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章