pytest framework serie avanzada de autoaprendizaje | parámetro de alcance

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 parámetro scope declara el alcance de los parámetros en argnames y divide los casos de prueba a través de las instancias de argvalues ​​correspondientes, lo que afecta el orden de recopilación de los casos de prueba.

nivel de módulo

Si especificamos explícitamente el parámetro de alcance, por ejemplo, declaramos el alcance del parámetro como un nivel de módulo, los métodos de prueba se coordinarán juntos después de la configuración, es decir, el orden de ejecución es ejecutar primero el primer conjunto de datos de todos los métodos de prueba. , y luego ejecute como un todo El segundo conjunto de datos hasta que se complete la ejecución.

el código se muestra a continuación:

import pytest

@pytest.mark.parametrize('test_input, expected', [(1,2),(3,4)], scope='module')
def test_scope1(test_input, expected):
    pass

@pytest.mark.parametrize('test_input, expected', [(1,2),(3,4)], scope='module')
def test_scope2(test_input, expected):
    pass

Los resultados de la ejecución son los siguientes:

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-4/test_scope.py
Testing started at 9:58 ...
Launching pytest with arguments D:/SynologyDrive/CodeLearning/WIN/pytest-book/src/chapter-4/test_scope.py in D:\SynologyDrive\CodeLearning\WIN\pytest-book\src\chapter-4

============================= 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\src\chapter-4, inifile: pytest.ini
collecting ... collected 4 items

test_scope.py::test_scope1[1-2] PASSED                                   [ 25%]
test_scope.py::test_scope2[1-2] PASSED                                   [ 50%]
test_scope.py::test_scope1[3-4] PASSED                                   [ 75%]
test_scope.py::test_scope2[3-4] PASSED                                   [100%]

============================== 4 passed in 0.01s ==============================

Process finished with exit code 0

Cuando el ámbito no se establece en módulo, el orden de recopilación predeterminado se ejecuta en el orden de los métodos de prueba. Es decir, ejecutar primero todos los datos del primer método de prueba y luego ejecutar todos los datos del segundo método de prueba.

import pytest

@pytest.mark.parametrize('test_input, expected', [(1,2),(3,4)])
def test_scope1(test_input, expected):
    pass

@pytest.mark.parametrize('test_input, expected', [(1,2),(3,4)])
def test_scope2(test_input, expected):
    pass
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-4/test_scope.py
Testing started at 9:58 ...
Launching pytest with arguments D:/SynologyDrive/CodeLearning/WIN/pytest-book/src/chapter-4/test_scope.py in D:\SynologyDrive\CodeLearning\WIN\pytest-book\src\chapter-4

============================= 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\src\chapter-4, inifile: pytest.ini
collecting ... collected 4 items

test_scope.py::test_scope1[1-2] PASSED                                   [ 25%]
test_scope.py::test_scope1[3-4] PASSED                                   [ 50%]
test_scope.py::test_scope2[1-2] PASSED                                   [ 75%]
test_scope.py::test_scope2[3-4] PASSED                                   [100%]

============================== 4 passed in 0.01s ==============================

Process finished with exit code 0

alcance no especificado

Cuando no se especifica el alcance (o alcance = Ninguno), cuando indirecto se establece en Verdadero o contiene todos los parámetros de nombres de argumentos, el alcance es el alcance mínimo de todos los alcances de dispositivos; de lo contrario, siempre funciona.

el código se muestra a continuación:

import pytest

@pytest.fixture(scope='module')
def test_input(request):
    pass

@pytest.fixture(scope='module')
def expected(request):
    pass

@pytest.mark.parametrize('test_input, expected', [(1,2),(3,4)], indirect=True)
def test_scope1(test_input, expected):
    pass

@pytest.mark.parametrize('test_input, expected', [(1,2),(3,4)], indirect=True)
def test_scope2(test_input, expected):
    pass

Los alcances de test_input y esperado son ambos de módulo, por lo que el alcance de los parámetros también es de módulo, y el orden de recopilación de casos de uso es el mismo que en la Sección 4.8.1.

el código se muestra a continuación:

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-4/test_scope.py
Testing started at 10:01 ...
Launching pytest with arguments D:/SynologyDrive/CodeLearning/WIN/pytest-book/src/chapter-4/test_scope.py in D:\SynologyDrive\CodeLearning\WIN\pytest-book\src\chapter-4

============================= 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\src\chapter-4, inifile: pytest.ini
collecting ... collected 4 items

test_scope.py::test_scope1[1-2] PASSED                                   [ 25%]
test_scope.py::test_scope2[1-2] PASSED                                   [ 50%]
test_scope.py::test_scope1[3-4] PASSED                                   [ 75%]
test_scope.py::test_scope2[3-4] PASSED                                   [100%]

============================== 4 passed in 0.01s ==============================

Process finished with exit code 0

Supongo que te gusta

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