Python+Appium+Pytest+Allure Pruebas prácticas de automatización de aplicaciones

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! ! !

Supongo que te gusta

Origin blog.csdn.net/Liuyanan990830/article/details/132307987
Recomendado
Clasificación