Comprensión de pytest.mark.usefixtures

En el estudio anterior, la función de dispositivo common_driver se ha pasado en el código y se utiliza pytest.mark.usefixtures:

@ pytest.mark.usefixtures ( " common_driver " )
     def test_welcome (self, common_driver): 
        WelcomePage (common_driver) .swipe_screen () 
        WelcomePage (common_driver) .get_spe_screenshot () 
        image_text = WelcomePage (common_driver) .identify_screenshot ()
         afirmar image_text = ) 立即 体验"

Al mirar la documentación oficial de Pytest hoy, descubrí que se puede usar de otra manera, dividida principalmente en dos casos

1. Cuando no sea necesario usar la devolución en el dispositivo, use pytest.mark.usefixtures (funcname) directamente. Por ejemplo: necesita crear un directorio vacío durante la prueba, y operar el directorio vacío como el directorio actual, pero no le importa el directorio vacío específico. En este caso, puede usar los accesorios tempfile y pytest para lograr:

código conftest.py

Importación OS
 importación shutil
 importación tempfile 

importación PYtest 


@ pytest.fixture 
DEF cleandir (): 
    old_cwd = os.getcwd ()
     # crear un directorio temporal 
    newpath = tempfile.mkdtemp ()
     # la ruta actual se cambia a un directorio temporal 
    os.chdir (newpath)
     rendimiento 
    # la ruta actual se cambia al directorio original 
    os.chdir (old_cwd)
     # recursiva borrar el directorio temporal 
    shutil.rmtree (newpath)

test_setenv.py

Importación OS
 importación PYtest 


@ pytest.mark.usefixtures ( " cleandir " )
 de clase TestDirectoryInit:
     DEF test_cwd_starts_empty (Ser):
        # archivos aserción en el directorio temporal no está vacía 
        la aserción os.listdir (os.getcwd ()) == []
         # Cree un nuevo archivo 
        con open ( " myfile " , " w " ) como f: 
            f.write ( " hello " ) 

    def test_cwd_again_starts_empty (self):
        #Debido a que pytest.mark.usefixtures actúa en la clase, significa que estos dos métodos de prueba requieren un accesorio cleandir, por lo que se crearán dos nuevos directorios temporales. En este método, el directorio temporal no tiene archivos nuevos, por lo que está vacío. Además, el orden de ejecución de pytest no tiene nada que ver con a-zA-Z0-9 
        afirmar os.listdir (os.getcwd ()) == []

2. Si necesita el valor de retorno en el dispositivo, simplemente pase el nombre del método decorado por dispositivo en el método de prueba, por ejemplo: common_driver

    def test_welcome (self, common_driver): 
        WelcomePage (common_driver) .swipe_screen () 
        WelcomePage (common_driver) .get_spe_screenshot () 
        image_text = WelcomePage (common_driver) .identify_screenshot ()
         afirmar image_text == " 立即 体验"

 

Supongo que te gusta

Origin www.cnblogs.com/my_captain/p/12713415.html
Recomendado
Clasificación