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)
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
Solución: Configure encoding='utf-8' en
el directorio del proyecto \venv\lib\site-packages\iniconfig_ init
_.py para modificar los resultados en ejecución
. Idea: Personalice tres etiquetas y ejecute solo la etiqueta team_auto