自定义适配的断言
testcase/test01.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)
重点:自定义assert数据,type和value,确定哪种断言方式(type),确定断言内容(value)
conftest.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
data接收的是test01.py中 assert": {“type”: “not in”, “value”: “测试数据”},target接收的是test01.py中 elements_text,即判断非空后的元素文本(elements.text)
补充知识:自定义标签
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
使用中文会出现报错
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 42: illegal multibyte sequence
解决方案:
项目目录\venv\lib\site-packages\iniconfig_init_.py 中设置 encoding=‘utf-8’
修改后运行结果
思路:自定义三个标签,只执行 team_auto 标签