python+aplicación (3)

Aserciones adaptadas a la medida

caso de prueba/prueba01.py

import pytest
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy as by
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

"""自定义标签"""
@pytest.mark.team_dev
def test_01():
    print('test_1')


@pytest.mark.team_test
def test_02():
    print('test_2')


@pytest.mark.team_auto
def test_03():
    print('test_3')
@pytest.mark.parametrize("data", [
    {
    
    "data": "测试数据", "assert": {
    
    "type": "not in", "value": "测试数据"}},
    {
    
    "data": "一二三", "assert": {
    
    "type": "equal", "value": "一二三"}},
    {
    
    "data": "四五六", "assert": {
    
    "type": "in", "value": "四五六"}}
])
def test_04(assert_data, data):
    url = 'http://127.0.0.1:4732/wd/hub'
    caps = {
    
    }
    caps['paltfromName'] = 'Android'
    ......
    
    driver = webdriver.Remote(url, caps)

    wait = WebDriverWait(driver, 10)
    elements = wait.until(ec.visibility_of_element_located((by.ID, 'com.zhao.myreader:id/tv_book_name')))
    elements_text = [i.text for i in elements if elements]
    assert_data(data["assert"], elements_text)

Enfoque: personalice los datos, el tipo y el valor de la afirmación, determine qué método de afirmación (tipo), determine el contenido de la afirmación (valor)

concurso.py

import pytest


@pytest.fixture
def assert_data():
    def _assert(data, target):
        if data["type"] == "not in":
            assert data["value"] not in target
        if data["type"] == "equal":
            assert data["value"] in target
        if data["type"] == "in":
            for i in target:
                assert data["value"] in i

    return _assert

Lo que recibe la información es afirmar": {"tipo": "no está", "valor": "datos de prueba"} en test01.py, y lo que recibe el objetivo es texto_elementos en prueba01.py, es decir, el texto del elemento después de juzgar que no está vacío (elements.text)
inserte la descripción de la imagen aquí

Conocimientos complementarios: etiquetas personalizadas

import pytest

"""自定义标签"""
@pytest.mark.team_dev
def test_01():
    print('test_1')


@pytest.mark.team_test
def test_02():
    print('test_2')


@pytest.mark.team_auto
def test_03():
    print('test_3')

mian.py

import pytest

pytest.main(["-vs", "-m", "team_auto"])

pytest.ini

[pytest]
markers =
    team_dev:表示开发团队
    team_test:表示测试团队
    team_auto:表示自动化团队

    v1:表示版本v1
    v2:表示版本v2
    v3:表示版本v3

Habrá un error al usar chino

UnicodeDecodeError: el códec 'gbk' no puede decodificar el byte 0x80 en la posición 42: secuencia multibyte ilegal

inserte la descripción de la imagen aquí

Solución: Configure encoding='utf-8' en
el directorio del proyecto \venv\lib\site-packages\iniconfig_ init
inserte la descripción de la imagen aquí
_.py para modificar los resultados en ejecución
inserte la descripción de la imagen aquí
. Idea: Personalice tres etiquetas y ejecute solo la etiqueta team_auto

Supongo que te gusta

Origin blog.csdn.net/qq_36562656/article/details/128386179
Recomendado
Clasificación