Pytest es un marco de prueba basado en Python para escribir y ejecutar código de prueba. pytest se usa principalmente para pruebas de API, puede escribir código para probar API, base de datos, interfaz de usuario, etc.
pytest es un marco de prueba de Python muy maduro y con todas las funciones, que tiene principalmente las siguientes ventajas:
simple y flexible, fácil de usar. La sintaxis de pytest es concisa y clara, fácil de entender y usar.
Se admite la parametrización. pytest puede parametrizar casos de prueba a través de decoradores o métodos de fijación para mejorar la cobertura de los casos de prueba.
Puede admitir pruebas unitarias simples y pruebas funcionales complejas, y también puede usarse para pruebas automatizadas como selenium/appnium y pruebas automatizadas de interfaz (pytest+requests).
pytest tiene muchos complementos de terceros y puede personalizar extensiones, como pytest-selenium (selenio integrado), pytest-html (generación perfecta de informes de prueba html), pytest-rerunfailures (ejecución repetida de casos fallidos), pytest-xdist ( distribución multi-CPU), etc.
Omitir y xfail procesamiento de casos de prueba. pytest proporciona un mecanismo flexible para omitir casos de prueba o fallas esperadas, y uno o algunos casos de prueba se pueden omitir durante la prueba según sea necesario.
Se puede integrar bien con jenkins. pytest se puede integrar a la perfección con herramientas de integración continua como Jenkins para facilitar las pruebas automatizadas y la generación de informes.
El marco de informes: allure también es compatible con pytest. pytest se puede integrar con el marco de informes de Allure para generar informes de prueba HTML detallados para facilitar el análisis y la visualización de los resultados de la prueba.
pytest es un marco de prueba de Python potente, flexible y fácil de usar, que es adecuado para varios tipos de requisitos de prueba y tiene un alto valor práctico.
Instalar
# 安装
pip install pytest
# 帮助
pytest -h
requisito de formato
Nombre del archivo: test_*.py o *_test.py
Nombre de la función: comience con prueba
Parámetros comunes
-s
Muestra la salida estándar , equivalente a –capture=no
, pytest no genera print logging
la salida de forma predeterminada, a menos que la aserción falle.
-v
Mostrar informe detallado .
-k
Busque casos de prueba por palabra clave .
-q
Mostrar un informe conciso .
-m
Ejecute solo los casos de prueba marcados .
-x
Deje de probar inmediatamente cuando falle un caso de uso.
-c file
Cargue el archivo de configuración desde el archivo.
-l (--showlocals)
Muestre las variables locales y sus valores al retroceder con información de falla del caso.
-rsxX
Informe® por qué se omitieron los casos de prueba (s), se esperaba que fallaran (x), se esperaba que fallaran pero en realidad se aprobaron (X).
-strict
Deshabilitar el uso de banderas de marca no registradas en el archivo de configuración (pytest.ini).
--maxfail=n
Dejar de ejecutar pruebas después de fallar n.
–reruns=num
Los casos fallidos se vuelven a ejecutar varias veces. Requiere pytest-rerunfailures
que se instale el módulo del complemento.
--lf (--last-failed)
Ejecutar solo el último caso de uso fallido. Si no hay casos fallidos o no se encuentran archivos de caché, el valor predeterminado es ejecutar todos los casos. Usado
--lfnf =[all, none]
al mismo tiempo, significa que todos los casos de prueba se ejecutan cuando no se encuentran casos de prueba o archivos de caché, y significa que no se ejecutan casos de prueba cuando no se encuentran casos de prueba o archivos de caché.--lf
=all
=none
pytest.main(['--lf','--lfnf=none', "test.py"])
--ff (--failed-first)
Ejecute primero los casos de uso fallidos antes de ejecutar otros casos de uso.
--nf (--new-first)
Comience ejecutando pruebas desde un archivo nuevo o un caso de uso recién modificado.
--sw (--stepwise)
Salga en caso de falla de la prueba y comience la prueba la próxima vez en el caso de prueba fallida.
--stepwise-skip
Ignore la primera prueba fallida y salga en la segunda prueba fallida.
--keep-duplicates
Pruebas repetidas.
--durations=n
Muestra los n casos de uso más lentos. Nota: pytest no mostrará tiempos de prueba <0,01 s de forma predeterminada a menos que se agregue el parámetro -vv.
--fixtures
Mostrar todos los accesorios disponibles.
--tb=style
Modo de impresión de información de seguimiento de pila (automático/largo/corto/línea/nativo/no]).
--setup-show
Muestra los pasos de ejecución del dispositivo.
--cache-show=[CACHESHOW]
Muestra el contenido de la memoria caché, no realiza recopilación ni prueba.
--cache-clear
Borre el caché de pytest antes de ejecutar.
--continue-on-collection-errors
Hacer cumplir las pruebas incluso si se produce un error de recopilación (fase de caso de recopilación).
--rootdir=ROOTDIR
Define el directorio raíz para las pruebas.
--color=color
Color de la salida del terminal (sí/no/automático).
--collect-only
Solo se recopilan casos de uso, no se ejecutan.
--assert=MODE
"simple" no realiza ninguna depuración de afirmación, "reescribir" reescribe la declaración de afirmación en el módulo de prueba para proporcionar información de expresión de afirmación
prueba basica
Nombre del archivo:test_one.py
# 测试函数
def test_division():
assert 1/1.0==1
# 测试类
class TestOne:
def test_addition(self):
"""
测试方法
"""
assert 1 + 1 == 2
def testsquare(self):
"""
测试方法
"""
assert 2*2 == 3
def tesequality():
"""
无效
"""
assert 10 == 11
correr:
pytest -v
-v
Indica para ver detalles.
Se encontraron 3 casos de prueba, 1 falló y 2 pasaron.
subconjunto de prueba
Encuentra un subconjunto por nombre de función
prueba_sub.py
# 测试子集
class TestSub:
def test_compare_one(self):
"""
测试方法
"""
assert 1 + 1 == 2
def test_compare_two(self):
"""
测试方法
"""
assert 1 + 2 == 3
pytest -v -k compare
Utilice el valor del parámetro pytest -k <substring>
del comando -k
para filtrar el nombre de la función.
marca de grupo
# -*- coding: utf-8 -*-
import pytest
# 测试子集
class TestGroup:
@pytest.mark.group
def test_group_one(self):
"""
测试方法
"""
assert 1 + 1 == 2
@pytest.mark.group
def test_group_two(self):
"""
测试方法
"""
assert 1 + 2 == 3
pytest -v -m group
Aquí el decorador se usa @pytest.mark.group
para marcar la función, y luego el pytest -v -m group
in -m
se usa para encontrar esta marca de agrupación.
función de fijación
import pytest
# 测试fixture
class TestFixture:
@pytest.fixture
def input_value(self):
return 36
def test_division(self, input_value):
"""
测试方法
"""
assert input_value / 6 == 6
Aquí, @pytest.fixture
la función modificada input_value se usa para preparar los datos con anticipación para test_division
su uso. Este método solo se puede usar en un archivo, si desea usarlo globalmente, puede configurar Conftest.py.
parametrizar
import pytest
@pytest.mark.parametrize("num, output",[(1,11),(2,22),(3,35),(4,44)])
def test_multiplication_11(num, output):
assert 11*num == output
pytest test_parame.py -v
omitir prueba
import pytest
@pytest.mark.xfail
@pytest.mark.great
def test_greater():
num = 100
assert num > 100
@pytest.mark.xfail
@pytest.mark.great
def test_greater_equal():
num = 100
assert num >= 100
@pytest.mark.skip
@pytest.mark.others
def test_less():
num = 100
assert num < 200
pytest test_xfail_skip.py -v
@pytest.mark.xfail
Marcado como estado xfail.
@pytest.mark.skip
Saltar directamente.
Consulte el sitio web oficial para obtener más información .