Pruebas automatizadas de Python: pytest implementa la unidad de palabras clave

En el último artículo, escribí un programa muy simple basado en palabras clave, pero este programa solo ejecutó la función y todavía hay muchos lugares que se pueden optimizar. En este artículo, quiero usar pytest para simplificar la escritura de casos de prueba automatizados, usando funciones de pytest relativamente básicas. En el próximo artículo, escribiré una versión compleja, ejecutando directamente el archivo yaml desde la capa inferior como caso de uso.

Caso de uso antes de la optimización

Antes de la optimización, si desea agregar un caso de uso, primero debe escribir un archivo yaml y luego escribir un caso de prueba automatizado de Python, el código del caso de uso es el siguiente:

def test_keyword(driver):
    """获取 yaml 文件"""
    with open('signin.yaml', encoding='utf-8') as f:
        steps = yaml.safe_load(f)
        page = Page(driver)

    for step in steps:
        action_name = step.get('action')
        params = step.get('params')
        action = getattr(page, action_name)
        action(**params)

Aunque este programa es relativamente simple de usar, si desea crear otros casos de uso, solo necesita copiar esta función una vez, modificar el nombre del archivo signin.yaml y no es necesario mover otros códigos, pero aún no ha llegado al punto en el que no necesita usar su cerebro Copiar tantos códigos repetidos cada vez no es atractivo.

Caso de uso optimizado

import pytest

@pytest.mark.yaml_case('signin.yaml')
def test_keyword():
	pass

El caso de uso optimizado es significativamente más simple, ni siquiera una sola línea de código en el cuerpo de la función. La configuración del archivo yaml se configura encima de la función de prueba en forma de decorador, que es más claro y fácil de encontrar al modificar.

Implementación

El método de implementación en realidad solo usa dos puntos de conocimiento de pytest: marcar y fijar, primero mire el código:

# conftest.py
import pytest
import yaml
from selenium import webdriver
from keyworks import Page

@pytest.fixture
def driver():
    d = webdriver.Chrome()
    d.implicitly_wait(8)
    d.maximize_window()
    yield d
    d.quit()

@pytest.fixture
def page(driver):
    """获取page"""
    return Page(driver)

@pytest.fixture(autouse=True)
def yaml_case(page, request):
    """yaml 测试步骤"""
    yaml_marker = request.node.get_closest_marker('yaml_case')
    yaml_file, *_ = yaml_marker.args
    with open(yaml_file, encoding='utf-8') as f:
        steps = yaml.safe_load(f)
        for step in steps:
            action = getattr(page, step['action'])
            action(**step['params'])

La atención se centra en el último accesorio. En primer lugar, configuré el dispositivo yaml_case para que se use automáticamente, por lo que no necesito llamarlo manualmente en la función de prueba, por lo que no necesito pasar ningún parámetro en la función de caso de uso.

En el accesorio yaml_case, la primera línea de código request.node.get_closest_marker('yaml_case')recibe la marca de yaml_case y la segunda línea de código yaml_marker.argsobtiene el parámetro en la marca, que es la ruta del archivo signin.yaml. A continuación, lea los pasos de prueba en este archivo y llame a la operación de ejecución específica. El código de llamada se ha mencionado en el artículo anterior. Si tiene alguna duda, puede volver atrás y echar un vistazo.

@pytest.mark.yaml_case('signin.yaml')
def test_keyword():
	pass

Resumir

La implementación de este código utiliza principalmente el mecanismo de marca flexible y la gestión de accesorios de pytest. Mientras pytest se use con soltura, no es difícil de implementar. Si tiene alguna pregunta o sugerencia, bienvenido a enviarme un mensaje privado para discutir juntos.

Si el artículo es útil para usted, recuerde darle me gusta, marcarlo y agregar atención. Compartiré algunos productos secos de vez en cuando...

La siguiente es la información de apoyo. Para los amigos que hacen [pruebas de software], debería ser el almacén de preparación más amplio y completo. Este almacén también me acompañó en el viaje más difícil. ¡Espero que también pueda ayudarlos!

subprograma de entrevista de prueba de software

¡El banco de preguntas de prueba de software maximizado por millones de personas! ! ! ¡Quién es quién sabe! ! ! El mini programa de cuestionarios más completo de toda la red, puedes usar tu teléfono móvil para hacer los cuestionarios, en el metro o en el autobús, ¡enróllalo!

Se cubren las siguientes secciones de preguntas de la entrevista:

1. Teoría básica de las pruebas de software, 2. web, aplicación, pruebas de funciones de interfaz, 3. red, 4. base de datos, 5. linux

6. web, aplicación, automatización de interfaz, 7. pruebas de rendimiento, 8. conceptos básicos de programación, 9. preguntas de la entrevista de hora, 10. preguntas de prueba abiertas, 11. pruebas de seguridad, 12. conceptos básicos de informática

Método de adquisición de información:

Supongo que te gusta

Origin blog.csdn.net/myh919/article/details/131810903
Recomendado
Clasificación