pytest framework serie avanzada de autoaprendizaje | aplicación de accesorios en la configuración de inicialización

Fuente del libro: Fang Lizhi Liang Lili "Pytest framework y aplicación de prueba automatizada"

Organice el contenido del curso del profesor y las notas experimentales mientras estudia, y compártalas con todos. Cualquier infracción será eliminada. ¡Gracias por su apoyo!

Adjunte una publicación de resumen: serie avanzada de autoaprendizaje de pytest framework | resumen


El proceso de inicialización generalmente realiza inicialización de datos, inicialización de conexión, etc.

Escenarios comunes: cuando se ejecutan los casos de prueba, los datos de algunos casos de uso se pueden leer y los datos deben leerse antes de que se ejecuten los casos de prueba. Se puede lograr la instalación y el desmontaje. Los accesorios se pueden nombrar e implementar de manera flexible.

Pasos específicos de implementación:

(1) Importar pytest.

(2) Cree la función data().

(3) Agregue @pytest.fixture() a la función data().

(4) Pase (nombre de la función de datos) en el método de prueba test_login que se utilizará, es decir, ejecute primero la función data() y luego ejecute el método de prueba.

(5) No pasar parámetros indica que el método de prueba se puede ejecutar directamente.

el código se muestra a continuación:

import pytest
import csv

@pytest.fixture()
def data():
    test_data = {'name': 'linda', 'age': 18}
    return test_data

def test_login(data):
    name = data['name']
    age = data['age']
    print("笔者的名字叫:{},今年{}。".format(name, age))

Si los datos de prueba se leen de un archivo csv, los pasos de la operación son los siguientes:

(1) Cree un nuevo archivo userinfo.csv, el código es el siguiente:

username,age
linda,18
tom,8
steven,28

(2) Agregue el código en test_fixture_data.py de la siguiente manera:

import pytest
import csv

@pytest.fixture()
def data():
    test_data = {'name': 'linda', 'age': 18}
    return test_data

def test_login(data):
    name = data['name']
    age = data['age']
    print("笔者的名字叫:{},今年{}。".format(name, age))

@pytest.fixture()
def read_data():
    with open('userinfo.csv') as f:
        row = csv.reader(f, delimiter=',')
        next(row)
        users = []
        for r in row:
            users.append(r)
    return users

def test_logins(read_data):
    name = read_data[0][0]
    age = read_data[0][1]
    print("s笔者的名字叫:{},今年{}。".format(name, age))

(3) Haga clic derecho y seleccione la ejecución de pytest.

D:\SynologyDrive\CodeLearning\WIN\pytest-book\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pycharm\_jb_pytest_runner.py" --path D:/SynologyDrive/CodeLearning/WIN/pytest-book/src/chapter-3/test_fixture_data.py
Testing started at 11:21 ...
Launching pytest with arguments D:/SynologyDrive/CodeLearning/WIN/pytest-book/src/chapter-3/test_fixture_data.py in D:\SynologyDrive\CodeLearning\WIN\pytest-book\src\chapter-3

============================= test session starts =============================
platform win32 -- Python 3.7.7, pytest-5.4.1, py-1.11.0, pluggy-0.13.1 -- D:\SynologyDrive\CodeLearning\WIN\pytest-book\venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: D:\SynologyDrive\CodeLearning\WIN\pytest-book
collecting ... collected 2 items

test_fixture_data.py::test_login PASSED                                  [ 50%]笔者的名字叫:linda,今年18。

test_fixture_data.py::test_logins PASSED                                 [100%]s笔者的名字叫:linda,今年18。


============================== 2 passed in 0.01s ==============================

Process finished with exit code 0

Supongo que te gusta

Origin blog.csdn.net/guolianggsta/article/details/131593358
Recomendado
Clasificación