Tabla de contenido
Objeto: una colección de pares clave-valor (clave:valor)
Matriz: un conjunto de valores ordenados
Literal: un valor único e indivisible (número, cadena, booleano)
Casos de prueba en formato yml
Leer datos de casos de uso en el archivo yml
En los artículos anteriores, aprendimos cómo enviar solicitudes de datos y cómo procesar los resultados devueltos por la interfaz de análisis. A continuación, aprendamos cómo administrar casos de prueba. Hoy presentamos el uso de archivos yml para la administración de casos de uso, así que primero háganlo juntos Aprenda sobre YAML y su uso sencillo.
YAML
YAML (Yet Another Markup Language), es posible que hayas entrado en contacto con este formato de archivo más o menos en el trabajo. Es un lenguaje de programación basado en Unicode que se utiliza para expresar secuencias de datos, es fácil de leer e interactuar con lenguajes de escritura. Una vez que el proyecto del blogger está conectado a k8s, básicamente todas las configuraciones usan yml.
Creo que la mayor ventaja de yml en comparación con el formato de archivo json es que admite comentarios, mientras que la definición de datos json no admite comentarios y el formato de escritura es más estricto que yml. Echemos un vistazo a la sintaxis de yml.
gramática básica
1. El archivo yml
usa sangría para representar relaciones jerárquicas. 2. No se permiten tabulaciones para sangría. Solo se pueden usar espacios
. 3. El número de espacios no es importante, siempre y cuando los elementos del mismo nivel estén alineados a la izquierda.
4 . Distingue entre mayúsculas y minúsculas
. 5. El formato de los datos es , nombre: (espacio) valor
Objeto: una colección de pares clave-valor (clave:valor)
> 字符串不用使用双引号或单引号圈起来
> 双引号圈住时不会转义字符串中的特殊字符
> 单引号圈住时会转义字符串中的特殊字符
Matriz: un conjunto de valores ordenados
> 数组名:
> -元素1
> -元素2
> 行内写法:
> 数组名:[元素1,元素2,元素3]
Literal: un valor único e indivisible (número, cadena, booleano)
Casos de prueba en formato yml
Definir archivo yml
Tomemos el inicio de sesión como ejemplo para escribir un caso de prueba, guardemos la siguiente información en testCase.yml
y nuestra estrategia se completará:
Testsuit: 登录
description: 用户中心登录测试
commonparam:
username: name
passwd: pwd
TestCases:
-
url: /api/user/login
detail: 正常登陆
method: Get
data:
username: name
passwd: pwd
check:
- pr
- userId
-
url: /api/user/login
detail: 密码错误
method: post
data:
username: name
passwd: pwd
check:
- 密码错误
-
url: /api/user/login
detail: 必填参数未填,不填密码
method: post
data:
username: name
check:
- 必填参数未填
-
url: /api/user/login
detail: 密码错误
method: post
data:
username: name
passwd: pwd
check:
- 密码错误
-
url: /api/user/login
detail: 密码错误
method: post
data:
username: name
passwd: pwd
check:
- 密码错误
A continuación, aprendamos cómo leer la información del caso de uso definida anteriormente.
Crear estructura
Al observar el archivo yml anterior combinado con la sintaxis básica de yml aprendida anteriormente, podemos saber fácilmente que los datos específicos de TestCases son una matriz y los datos enviados también son una matriz, por lo que podemos definir la siguiente estructura para que coincida. :
// TestSuit 测试用例结构体
type TestSuit struct {
testsuit string
description string
TestCases []struct {
URL string
Detail string
Method string
Check []string
Data struct {
Username string `json:"username"`
Passwd string `json:"passwd"`
}
}
Leer datos de casos de uso en el archivo yml
Lo que usamos para analizar YML esta vez es una biblioteca de terceros, el método de adquisición es: go get github.com/ghodss/yaml
Primero, el código:
func main() {
// 读取数据并解析到json中
data, _ := ioutil.ReadFile("testCase.yml")
t := TestSuit{}
err := yaml.Unmarshal(data, &t)
if err != nil {
fmt.Println(err.Error())
}
j, _ := json.Marshal(t.TestCases)
fmt.Println(string(j))
// 遍历yml文件中定义的test case信息
for i := 0; i < len(t.TestCases); i++ {
Path := t.TestCases[i].URL
Method := t.TestCases[i].Method
Param := t.TestCases[i].Data
CheckData := t.TestCases[i].Check
j, _ := json.Marshal(Param)
fmt.Println("==================我是华丽的分割线==================")
fmt.Println("请求参数:", string(j))
fmt.Println("请求路径:", Path)
upperMethod := strings.ToUpper(Method)
// 检验请求方式是否合法
fmt.Println(upperMethod)
fmt.Println(CheckMethod(upperMethod))
fmt.Println("校验数据:", CheckData)
// 根据不同的请求方式选择不同的请求URL
if upperMethod == "POST" {
_, body, _ := gorequest.New().Post(fmt.Sprintf("http://httpbin.org%s", Path)).
Send(fmt.Sprintf("%s", string(j))).
Set("Content-Type", "application/json").
End()
fmt.Println(body)
} else if upperMethod == "GET" {
fmt.Println(fmt.Sprintf("http://%s/%s", BaseURI, Path))
_, body, _ := gorequest.New().Get(fmt.Sprintf("http://%s%s", BaseURI, Path)).
Send(fmt.Sprintf("%s", string(j))).
Set("Content-Type", "application/json").
End()
fmt.Println(body)
}
}
}
// CheckMethod 校验请求的方法是否正确
func CheckMethod(method string) bool {
upperMethod := strings.ToUpper(method)
if upperMethod == "POST" || upperMethod == "GET" {
return true
}
return false
}
La atención en el código se ha prestado con relativa claridad, y esta vez se usa para http://httpbin.org
depurar. Los amigos cuidadosos pueden haber notado la última función, que verifica el método de solicitud. Otras, como la legalidad de la ruta, se pueden ampliar para verificación. A continuación, probemos si el código anterior realmente puede obtener la información del caso de uso y enviar la solicitud correctamente.
Puesta en servicio
El resultado de correr:
Cabe señalar que debido a que la ruta a la que accedemos no está monitoreada /api/user/login
en http://httpbin.org
la interfaz, el 404 devuelto por la interfaz en realidad indica que la solicitud fue exitosa, pero no podemos ver los datos y la URL de la solicitud específica, por lo que modificamos la ruta en yml. archivo para Para http://httpbin.org
aquellos que ya han escuchado, /post
veamos los resultados.
Los datos modificados son:
prueba:
Puede ver que los parámetros/ruta/IP y otra información que solicitamos son consistentes con el contenido completado en nuestro caso de prueba. En este punto, nuestros casos de prueba y pruebas están completos.
Resumir
- YAML
- Analizar información en el archivo yml
- Enviar datos en formato yml
Cómo obtener información
【Mensaje 777】
Amigos que quieran obtener el código fuente y otros materiales tutoriales, por favor den Me gusta + comentario + recopilación , ¡tres veces seguidas!
Después de tres rondas consecutivas , les enviaré mensajes privados uno por uno en el área de comentarios ~