Pytest es solo un marco de prueba de una sola unidad. Para completar la automatización de las pruebas de aplicaciones, es necesario integrar pytest y appium, y usar allure para completar la salida de los informes de prueba.
Los pasos específicos para escribir un script lineal normal son los siguientes:
1. Diseñar el caso de prueba automatizado para la aplicación que se va a probar
2. Crear un nuevo proyecto de prueba de aplicación
3. Configurar el archivo conftest.py, etc.
4. Escribir el archivo general archivo de ejecución del caso de prueba de la aplicación
5. Automatizar el diseño El caso de prueba se convierte en un script Nota:
Para garantizar la estabilidad del script, se aplican las funciones comunes de pytest. El siguiente ejemplo utiliza la calculadora de Android como ejemplo para explicar .
Código completo en Gitee: https://gitee.com/YouJeffrey/AUTO_TEST_APP
Condición previa: descargar la biblioteca de terceros
1. Descargue appium-python-client
2. Descarga pytest
3. Descargue allure-pytest
1. Diseñar casos de prueba automatizados para la aplicación a probar.
2. Cree un nuevo proyecto de prueba de APLICACIÓN
3. Información del archivo de configuración
1. Primero configure el archivo externo conftest.py
import pytest # Configure diversa información de conexión de la aplicación @pytest.fixture(scope='session') def android_setting(): des = { 'automationName': 'appium', 'platformName': 'Android', 'platformVersion': ' 6.0 .1', # Complete el número de versión del sistema de la máquina virtual/máquina real de Android 'deviceName': 'MuMu', # Complete el nombre del dispositivo de la máquina virtual/máquina real de Android 'appPackage': 'com.sky. jisuanji', # Complete el nombre del paquete de la aplicación probada 'appActivity': '.JisuanjizixieActivity', # Complete la entrada de la aplicación probada 'udid': '127.0.0.1:7555', # Complete el udid visto a través de la línea de comando dispositivos adb 'noReset': Verdadero, # Si se debe restablecer la APLICACIÓN 'noSign': Verdadero,# Si no se debe firmar 'unicodeKeyboard': Verdadero, # Si se admite la entrada en chino 'resetKeyboard': Verdadero, # Si se admite restablecer el teclado 'newCommandTimeout': 30 # 30 segundos sin enviar un nuevo comando para desconectar } regresar des
2. Configure el archivo conftest.py de la capa de casos de uso.
importar tiempo importar pytest desde appium importar controlador webdriver = Ninguno # Inicie la aplicación de calculadora en Android @pytest.fixture() def start_app(android_setting): controlador global controlador = webdriver.Remote('http://127.0.0.1:4723 /wd /hub',android_setting) return driver # Cierra la aplicación de calculadora en el sistema Android @pytest.fixture() def close_app(): produce driver time.sleep(2) driver.close_app()
3. Configure el archivo pytest.ini para la configuración de agrupación.
4. Escriba el archivo de entrada de ejecución de prueba run_all_cases.py
import os import pytest # La ruta actual (usando el método abspath se puede ejecutar a través de la ventana dos) current_path = os.path.dirname(os.path.abspath(__file__)) #json report path json_report_path = os.path.join( current_path,'report /json') # ruta del informe html html_report_path = os.path.join(current_path,'report/html') # Ejecute el caso de uso en pytest y genere un archivo json pytest.main(['-s', '-v',' --alluredir=%s'%json_report_path,'--clean-alluredir']) # convierte el archivo json en un informe html os.system('allure generate %s -o %s --clean'% (json_report_path,html_report_path))
5. Escribe casos de prueba
Hay dos submódulos comerciales test_add_sub_module y test_mul_div_module bajo la capa de casos de prueba;
1. El archivo test_add.py en el módulo test_add_sub_module
El código se muestra a continuación:
importar atractivo desde appium.webdriver.webdriver importar Por @allure.epic('proyecto de computadora Android') @allure.feature('versión V1.0') clase TestAddSub(): @allure.story('operación de adición') @allure .title('[case01] Verifique que la computadora pueda completar la función de suma normalmente') # @pytest.mark.add_basic def test_cases01(self,start_app,close_app): with allure.step('1. Inicie la aplicación de la computadora en el Sistema Android'): driver = start_app con allure.step('2, presione 9, +, 8, ='): driver.find_element(By.XPATH, '//android.widget.Button[@resource-id=" com .sky.jisuanji:id/btn9"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/jia" ]').hacer clic() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn8"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click() actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').text with allure.step('3. Verifique que el resultado real sea correcto'): # Afirmar el resultado real == 17.0 afirmar actual_result == '17.0'
2. El archivo test_sub.py en el módulo test_add_sub_module
El código se muestra a continuación:
importar encanto desde appium.webdriver.webdriver importar Por @allure.epic('proyecto de computadora Android') @allure.feature('versión V1.0') clase TestAddSub(): @allure.story('resta') @allure. title('[case01] Verifique si la computadora puede completar la función de resta normalmente') def test_cases01(self,start_app,close_app): with allure.step('1. Inicie la aplicación de la computadora en el sistema Android'): driver = start_app con encanto .step('2, presione 6, -, 2, ='): driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/ btn6"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/jian"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn2"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click() actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').text with allure.step('3. Verifique que el resultado real sea correcto'): # Afirmar el resultado real == 4.0 afirmar actual_result == '4.0'
3. El archivo test_mul.py en el módulo test_mul_div_module
El código se muestra a continuación:
importar encanto desde appium.webdriver.webdriver importar Por @allure.epic('proyecto de computadora Android') @allure.feature('versión V1.0') clase TestAddSub(): @allure.story('multiplicación') @allure. title('[case01] Verifique si la computadora puede completar la función de multiplicación normalmente') def test_cases01(self,start_app,close_app): with allure.step('1. Inicie la aplicación de la computadora en el sistema Android'): driver = start_app con encanto .step('2, presione 3, *, 4, ='): driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/ btn3"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/chen"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn4"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click() actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').text with allure.step('3. Verifique que el resultado real sea correcto'): # Assert el resultado real == 12.0 afirmar actual_result == '12.0'
4. El archivo test_div.py en el módulo test_mul_div_module
El código se muestra a continuación:
importar atractivo desde appium.webdriver.webdriver importar Por @allure.epic('proyecto de computadora Android') @allure.feature('versión V1.0') clase TestAddSub(): @allure.story('operación de división') @allure .title('[case01] Verifique si la computadora puede completar la función de división normalmente') def test_cases01(self,start_app,close_app): with allure.step('1. Inicie la aplicación de la computadora en el sistema Android'): driver = start_app con allure .step('2, presione 8, *, 4, ='): driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id / btn8"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/chu"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn4"]').click() driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click() actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').text with allure.step('3. Verifique que el resultado real sea correcto'): # Assert el resultado real == 2.0 afirmar actual_result == '2.0'
Seis, ejecute los resultados para generar informes de prueba.
Caso práctico
La teoría óptica es inútil, tienes que aprender a seguirla y tienes que hacerlo tú mismo, para que puedas aplicar lo aprendido en la práctica, en este momento puedes aprender de algunos casos de combate reales.
Si te resulta útil, dale me gusta y recógelo para animar al autor. También le resultará conveniente encontrarlo rápidamente la próxima vez.
Si no lo comprende, consulte la tarjeta pequeña a continuación. El blogger también espera aprender y progresar con evaluadores de ideas afines.
A la edad adecuada, elija la posición adecuada e intente aprovechar al máximo sus propias ventajas.
Mi camino de desarrollo de pruebas automatizadas es inseparable del plan de cada etapa del camino, porque me gusta planificar y resumir,
¡Pruebe y desarrolle videotutoriales, notas de estudio y reciba portales! ! !