Análisis en profundidad de los archivos de configuración YAML: desde la sintaxis hasta las mejores prácticas

 

1. Entender YAML

  • YAML (YAML Ain't Markup Language) es un lenguaje de serialización de datos legible por humanos. Su objetivo de diseño es facilitar el intercambio y el intercambio de datos entre diferentes lenguajes de programación. YAML emplea una sintaxis concisa e intuitiva para representar estructuras de datos de una manera fácil de leer y escribir.
  • YAML se usa ampliamente en archivos de configuración, serialización de datos, diseño de API y muchas otras áreas. Es compatible con muchos lenguajes de programación y marcos, incluidos Python, Java, Ruby, etc. En Python, la biblioteca PyYAML se puede usar para leer y escribir archivos YAML.
  • Las ventajas de YAML incluyen alta legibilidad, fácil comprensión, compatibilidad con múltiples lenguajes de programación y soporte para estructuras de datos enriquecidas. Su sintaxis concisa hace que los archivos de configuración sean más intuitivos y fáciles de mantener. Ya sea como formato de archivo de configuración o como formato de intercambio de datos, YAML es una opción poderosa y popular.

2. Especificación de sintaxis YAML

Las características sintácticas de YAML incluyen:

  1. Use sangría para indicar relaciones jerárquicas y no use llaves u otros símbolos.
  2. Use dos puntos para indicar pares clave-valor.
  3. Se admiten listas y estructuras anidadas.
  4. Use comentarios que comiencen con "#".
  5. Admite referencias y anclas, puede hacer referencia a otras partes de los datos en el documento.

YAML (YAML Ain't Markup Language) admite una variedad de tipos de datos, incluidas cadenas, números, booleanos, listas, diccionarios y valores nulos. Los siguientes son códigos de muestra y las especificaciones de sintaxis correspondientes para cada tipo de datos:

1. Cuerda

  • Especificación gramatical: use comillas simples o comillas dobles para encerrar la cadena. Las comillas de cadena también se pueden omitir
name: "John"
addr: "长沙"

2. Números

  • Especificación gramatical: simplemente escriba el número directamente.
age: 30

3. valor booleano

  • Especificación gramatical: use verdadero para representar verdadero, use falso para representar falso.
isStudent: true
isTeacher: false

4. Lista

  • Especificación gramatical: use un guión (-) para representar los elementos de la lista y use líneas nuevas para separar los elementos de la lista.
fruits:
    - apple
    - banana
    - orange

5. Diccionario

  • Especificación de gramática: use dos puntos (:) para representar pares clave-valor y use espacios para separar pares clave-valor.
person:
    name: "John"
    age: 30

6. Valor nulo

  • Especificación de gramática: use nulo para representar un valor vacío.
status: null
  • Estos son los tipos de datos comunes admitidos por YAML y el código de muestra correspondiente. Puede utilizar estos tipos de datos para crear estructuras de datos complejas según sea necesario.
  • Nota : YAML es muy sensible a la sangría, y los espacios se usan para la sangría para indicar relaciones jerárquicas. El número de espacios para la sangría puede ser 2 o 4, pero debe ser constante en todo el documento.

Tres, operación python YAML

  • Python proporciona la biblioteca pyyaml ​​para operar archivos YAML. Antes de operar archivos yaml, la biblioteca pyyaml ​​​​debe estar instalada.
  • Ejecute el siguiente comando en Terminal (Pycharm-Terminal) o Símbolo del sistema (cmd) para instalar la biblioteca pyyaml: pip install pyyaml

1. Python lee el archivo yaml

  • Paso 1: el archivo yaml preparado de antemano, el sufijo del archivo yaml es .yaml o .yml
name: "John"
addr: "长沙"
age: 18
status: null
isStudent: true
fruits:
    - apple
    - banana
    - orange
teacher:
    name: "Alex"
    age: 30
  • Paso 2: use python para leer los datos en yaml
import yaml

with open(file="d.yaml", mode="r",encoding='utf-8') as f:
    res = yaml.safe_load(f)
print(res)
  • Método yaml.safe_load(): lee los datos en el archivo YAML. El parámetro del método yaml.safe_load() es un objeto de archivo
  • Resultado en ejecución: los datos en yaml se convertirán automáticamente al tipo de datos admitido por python

 

2.python escribe datos en el archivo yaml

  • El primer paso: escriba el valor de la variable especificado por python en el archivo yaml
import yaml

data = {
    "Person": {
        "name": "John",
        "age": 30,
        "address": {
            "street": "123 Main St",
            "city": "Anytown",
            "state": "CA"
        }
    }
}
# 将data变量存储的数据写入YAML文件
with open(file="example.yaml", mode="w") as f:
    yaml.dump(data, f)
  • Método yaml.dump(): escriba los datos en el archivo yaml. El primer parámetro del método yaml.dump() es escribir los datos y el segundo parámetro es el objeto del archivo.
  • Paso 2: Ver la pantalla en ejemplo.yaml

 

4. YAML combinado con la automatización de la interfaz de usuario para realizar KDT

  • KDT (Keyword-Driven Testing): abreviatura en inglés de prueba basada en palabras clave.
  1. preparación de datos yaml
# 访问页面
- action: goto
  params:
    url: 'https://www.baidu.com'
# 输入python
- action: sendkeys
  params:
    locator: ['id','kw']
    value: 'python'
# 点击搜索按钮
- action: click
  params:
    locator: ['id','su']
# 断言
- action: assert_text_contains
  params:
    locator: ['id','content_left']
    excepted: 'python'
  1. Encapsulación del método de página base
from selenium.webdriver import Chrome,ActionChains

class BasePage:
    def __init__(self,driver:Chrome):
        self.driver = driver

    def goto(self,url):
        '''打开网址'''
        self.driver.get(url)

    def click(self,locator):
        '''点击操作'''
        el = self.driver.find_element(*locator)
        try:
            el.click()
        except:
            ActionChains(self.driver).click(el).perform()

    def sendkeys(self,value,locator=None):
        '''发送文本操作'''
        if locator:
            # 相当于ActionChains中的send_keys_to_element(ele,value),先做点击,再做文本输入
            el = self.driver.find_element(*locator)
            el.send_keys(value)
        else:
            ActionChains(self.driver).send_keys(value).perform()

    def assert_text_contains(self,locator,excepted):
        '''断言文本是否包含指定的内容'''
        el = self.driver.find_element(*locator)
        assert excepted in el.text
  1. Escritura de casos de prueba --- implementar pruebas basadas en palabras clave
import time
import yaml
from selenium import webdriver
from basepage import BasePage

# 1、读取yaml文件中的数据
with open(file='test_keyword.yaml',mode='r',encoding='utf-8') as f:
    data = yaml.safe_load(f)

# 2、测试用例编写
def test_01():
    # 初始化浏览器操作
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.maximize_window()
    # 实例化BasePage的对象
    basepage = BasePage(driver)
    # 遍历读取到的data数据
    for step in data:
        # 获取动作名称
        method_name = step['action']
        # 获取参数
        params = step['params']
        # 获取类中方法名
        method = getattr(basepage, method_name)
        # 调用方法,输入参数
        method(**params)  # 字典解包
    time.sleep(2)
    driver.quit()

Supongo que te gusta

Origin blog.csdn.net/a448335587/article/details/131794971
Recomendado
Clasificación