目錄
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目錄下可查看輸出的報告文件
打開報告文件查看到的內容如下: