Httprunner引數化的案例演示(單個用例)

2021-10-04 20:14:57 字數 3373 閱讀 3313

目錄

1.用例準備

1.1生成用例

1.2用例引數化

1.3自定義函式

2.執行用例

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: #請求頭中的資訊

postman-token: cc0a84c0-7c4c-4634-8d36-7bd58563045a

user-agent: postmanruntime/7.24.0

device_sn: fwgrio7cna50dsu

os_platform: ios

user_agent: ios/10.3

json: #請求體body中的資訊

sign: 9c0c7e51c91ae963c833a4ccbab8d683c4a90c98

method: post #請求型別

url: #請求位址

validate:

- eq:

- status_code

- 200

- eq:

- headers.content-type

- eq:

- content.success

- true

- eq:

- content.token

- dkbnlkokkvnkq8hj

首先,在config中的variables模組申明變數、並賦值;

其次,在用例部分引用變數($var)或呼叫函式賦值($);

再次,將自定義函式寫在debugtalk.py中。

最後debugtalk.py函式中定義相關變數和引數,詳細內容參見httprunner中文使用手冊的hook機制

此檔案在自動生成的結果目錄的根目錄中:

引數化後的用例如下所示:

config:

variables: #非必填,宣告全域性變數,並賦值,作用域為整個testcase

device_sn: $ #生成 15 位長度的隨機字串並賦值給 device_sn,函式在debugtalk.py中定義

os_platform: 'ios'

teststeps:

- name: /api/get-token #必填,測試步驟名稱

request: #必填,測試步驟請求資訊

headers: #請求頭中的資訊

postman-token: cc0a84c0-7c4c-4634-8d36-7bd58563045a

user-agent: postmanruntime/7.24.0

device_sn: $device_sn

os_platform: $os_platform

user_agent: ios/10.3

json: #請求體body中的資訊

method: post #請求型別

url: #請求位址

validate:

- eq:

- status_code

- 200

- eq:

- headers.content-type

- eq:

- content.success

- true

加入自定義函式後的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_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

執行hrun d:\httprunner\api_api\testcases\get_token_new.yml,執行此單個用例檢視結果

執行完成後,到reports目錄下可檢視輸出的報告檔案

開啟報告檔案檢視到的內容如下:

httprunner變數 引數關聯與引數化

httprunner是基於requests的,所以處理思路與python中處理一樣 目錄1 變數 2 httprunner引數關聯 3 httprunner引數化 1 變數 比如說有一種場景,介面a需要傳乙個引數m值才能返回介面,介面b需要傳引數m的值以及a的返回值才能獲取結果,這時候可以把引數的值...

httprunner進行介面測試 引數化

1,用例格式 config test test 即 全域性配置 用例 用例 config模組裡面定義的是整個文字測試集的變數,即全域性變數 test模組裡面定義的是具體介面請求,下面看個具體例子 2,舉個例子 以某快遞查詢介面為例,新建乙個yaml檔案,命名為test post api.yaml c...

HTTPRunner實踐二 引數化之生成UUID

介面測試中,需要使用到uuid,用來生成唯一id。uuid是128位的全域性唯一識別符號,通常由32位元組的字串表示。它可以保證時間和空間的唯一性,也稱為guid,全稱為 uuid universally unique identifier,python 中叫 uuid。它通過mac位址 時間戳 命...