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 == " 立即 体验"