[Automatización de la interfaz de Golang 05] Utilice yml para gestionar casos de uso de automatización

Tabla de contenido

YAML

gramática básica

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

Definir archivo yml

Crear estructura

Leer datos de casos de uso en el archivo yml

Puesta en servicio

Resumir

Cómo obtener información


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.ymly 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/yamlPrimero, 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.orgdepurar. 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/loginen http://httpbin.orgla 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.orgaquellos que ya han escuchado, /postveamos 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 ~

Supongo que te gusta

Origin blog.csdn.net/GDYY3721/article/details/132020725
Recomendado
Clasificación