Directorio
1. Preparación del caso de uso
1.2 Parametrización de casos de uso
1. Preparación del caso de uso
1.1 Generar caso de uso
1. Capture get_token a través del violinista y convierta el formato de archivo a .yml. Para el método de operación, vea los problemas y soluciones en el proceso de HttpRunner usando casos de documentos para registrar y convertir y generar casos de prueba
2. Coloque los casos de uso en el directorio de estructura de casos de prueba generado, vea la generación del directorio: archivo de proyecto Httprunner y organización de casos de prueba
3. Para facilitar la lectura, puede usar Notepad ++ o PyCharm para abrir este archivo de caso de uso.
4. El archivo original después de abrir se muestra a continuación, con algunos comentarios agregados al script:
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 Parametrización de casos de uso
1. Ahora necesitamos parametrizar los tres parámetros device_sn, app_version y os_platform y el signo en el cuerpo de la solicitud
Primero, declare variables y asigne valores en el módulo de variables en config;
Segundo, variables de referencia ($ var) o asignaciones de funciones de llamada ($ {func ($ var)}) en la sección de casos de uso;
Nuevamente, escriba la función personalizada en debugtalk.py.
Pasado
Las variables y parámetros relevantes se definen en la función debugtalk.py. Para más detalles, consulte el mecanismo de enlace en el manual chino httprunner
Este archivo está en la raíz del directorio de resultados generado automáticamente:
Los casos de uso parametrizados son los siguientes:
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 función personalizada
El archivo debugtalk.py después de agregar la función personalizada es el siguiente:
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. Caso de uso de ejecución
Ejecute hrun D: \ httprunner \ Api_api \ testcases \ get_token_new.yml, ejecute este caso de uso único para ver los resultados
Una vez completada la ejecución, vaya al directorio de informes para ver el archivo de informe de salida
Abra el archivo del informe para ver el siguiente contenido: