Uso detallado de Pytest series (10) de solicitud de parámetros en el dispositivo

Si quieres aprender Pytest desde cero, ¡puedes consultar esta serie de artículos!

https://www.cnblogs.com/poloyy/category/1690628.html

 

Prólogo

  • Para mejorar la reutilización, usaremos diferentes dispositivos al escribir casos de prueba, tales como: la operación de inicio de sesión más común, la condición previa de la mayoría de los casos de uso es iniciar sesión
  • Suponiendo que diferentes casos de uso desean iniciar sesión en diferentes cuentas de prueba, entonces el dispositivo de inicio de sesión no puede escribir la cuenta muerta, y la operación de inicio de sesión debe completarse pasando parámetros

 

Caso 1: Pase un solo parámetro

import pytest 


@ pytest.fixture () 
def login (request): 
    name = request.param
     print (f " == 账号 是 : {name} == " )
     return name 


data = [ " pyy1 " , " polo " ] 
ids = [f " login_test_name es: {name} "  para el nombre en los datos] 


@ pytest.mark.parametrize ( " login " , data, ids = ids, indirecto = True)
 def test_name (login):
    print (f " La cuenta de inicio de sesión para el caso de prueba es: {login} " )

Resultado de ejecución

recolectando ... recolectando 2 elementos 

10fixture_request.py::test_name[login_test_name is : pyy1] == El número de cuenta es: pyy1 == APROBADO 
[ 50% ] La cuenta de inicio de sesión para el caso de prueba es: pyy1 

10fixture_request.py::test_name[login_test_name es : polo] == El número de cuenta es: polo == 
APROBADO [ 100%] La cuenta de inicio de sesión para el caso de prueba es: polo

Punto de conocimiento

  • El   parámetro indirecto = verdadero se agrega   para ejecutar el inicio de sesión como una función, no como un parámetro, y para pasar datos como un parámetro a la función
  • def test_name (login)  , donde login es para obtener el valor devuelto por el dispositivo

 

Caso 2: múltiples parámetros

@ pytest.fixture ()
 def inicios de sesión (solicitud): 
    param = request.param
     print (f " 账号 是 : {param ['username']} , 密码 是 : {param ['pwd']} " )
     return param 


data = [ 
    { " nombre de usuario " : " nombre1 " , " pwd " : " pwd1 " }, 
    { " nombre de usuario " : " nombre2 " , " pwd ": "pwd2 " }, 
] 


@ pytest.mark.parametrize ( " logins " , data, indirecto = True)
 def test_name_pwd (logins):
     print (f " El número de cuenta es: {logins ['username']}, la contraseña es: {logins [ 'pwd']} " )

Resultado de ejecución

10fixture_request.py::test_name_pwd[logins0] La cuenta es: nombre1, la contraseña es: pwd1 APROBADA 
[ 50% ] La cuenta es: nombre1, la contraseña es: pwd1 

10fixture_request.py::test_name_pwd[logins1] La cuenta es: nombre2, la contraseña es: pwd2 
APROBADO [ 100%] La cuenta es: nombre2, la contraseña es: pwd2

Punto de conocimiento

Si necesita pasar varios parámetros, debe pasar el diccionario

 

Caso 3: múltiples accesorios (solo agregue un decorador)

Esto se usa más comúnmente

# 多个 fixture 
@ pytest.fixture (scope = " module " )
 def input_user (request): 
    user = request.param
     print ( " 登录 账户 :% s " % user)
     return user 


@ pytest.fixture (scope = " module " )
 def input_psw (request): 
    psw = request.param
     print ( " 登录 密码 :% s " % psw)
     return psw 


data = [ 
    (" nombre1 " , " pwd1 " ), 
    ( " nombre2 " , " pwd2 " ) 
] 


@ pytest.mark.parametrize ( " input_user, input_psw " , data, indirecto = True)
 def test_more_fixture (input_user, input_psw):
     print ( " accesorio返回 的 内容: " , input_user, input_psw)

Resultado de ejecución

10fixture_request.py::test_more_fixture[name1- pwd1] acceso a la cuenta: nombre1 
Contraseña: pwd1 
PASADA [ 50% ] accesorio contenido devueltos: nombre1 pwd1 

10fixture_request.py::test_more_fixture[name2 - contraseña2] acceso a la cuenta: nombre2 
Contraseña: contraseña2 
APROBADO [ 100%] Lo que devuelve el aparato: nombre2 pwd2

 

Caso 4: múltiples accesorios (decorador de superposición)

# 多个 fixture 
@ pytest.fixture (scope = " function " )
 def input_user (request): 
    user = request.param
     print ( " 登录 账户 :% s " % user)
     return user 


@ pytest.fixture (scope = " function " )
 def input_psw (solicitud): 
    psw = request.param
     print ( " 登录 密码 :% s " % psw)
     return psw 


name = [ "nombre1 " , " nombre2 " ] 
pwd = [ " pwd1 " , " pwd2 " ] 


@ pytest.mark.parametrize ( " input_user " , nombre, indirecto = verdadero) 
@ pytest.mark.parametrize ( " input_psw " , pwd, indirecto = Verdadero)
 def test_more_fixture (input_user, input_psw):
     print ( " fixture 返回 的 内容: " , input_user, input_psw)

Resultado de ejecución

10fixture_request.py::test_more_fixture[pwd1- NAME1] cuenta entrada: nombre1 
Contraseña: pwd1 
PASSED [ 25% ] accesorio contenido devueltos: nombre1 pwd1 

10fixture_request.py::test_more_fixture[pwd1 - NAME2] cuenta entrada: nombre2 
Contraseña: pwd1 
PASSED [ 50% ] accesorio contenido devueltos: NAME2 pwd1 

10fixture_request.py::test_more_fixture[pwd2 - NAME1] cuenta entrada: nombre1 
contraseña: contraseña2 
PASADA [ 75% ] accesorio contenido devueltos: nombre1 contraseña2 

10fixture_request.py::test_more_fixture [ pwd2 - nombre2 ] cuenta de inicio de 
sesión: nombre2 contraseña de inicio de sesión: pwd2 APROBADA 
[ 100%] lo que devuelve el dispositivo: nombre2 pwd2

Número de casos de prueba = 2 * 2 = 4

 

Supongo que te gusta

Origin www.cnblogs.com/poloyy/p/12685948.html
Recomendado
Clasificación