Pytest中装饰器@pytest.mark.parametrize(‘参数名’, list)
方式1:
使用py文件存放测试数据。
login_data.py
def login_data_list():
login_data_list = [
{'username': '', 'password': 'xxxx', 'expect': '账号为空'},
{'username': 'xxxx', 'password': '', 'expect': '密码为空'},
{'username': 'xxxx', 'password': 'xxxxx', 'expect': '无效的用户名或密码。'},
]
return login_data_list
test_login.py
import pytest
from page_objects.login import Login
from data.login_data import login_data_list
from page_locators.login_page import LoginPage
@pytest.mark.parametrize('test_data', login_data_list())
@pytest.mark.usefixtures('geturl')
def test_sing_in_failed(self, browser, test_data):
username = login['username']
password = login['password']
expected = login['expect']
try:
LoginPage.user_login(browser, username, password)
actual = LoginPage(browser).error_text()
assert actual == expect
except Exception as e:
raise e
方式2:
使用yaml存放测试数据,读取yaml文件数据
test_data.yaml
login_data1: username: password: xxxxx login_data2: username: xxxxx password:
@pytest.mark.parametrize('test_data', YamlUtil(os.getcwd() + '/test_data.yaml').read_yaml().values())
@pytest.mark.usefixtures('geturl')
def test_sing_in_failed(self, browser, test_data):
username = test_data['username']
password = test_data['password']
LoginPage.user_login(browser, username, password)
方式3:
与第2种方式类似,视实际情况使用。
test_data.yaml
- user: username1 pwd: 'xxxxx' - user: username2 pwd: 'xxxxx' - user: username3 pwd: 'xxxxx'
@pytest.mark.parametrize('login', YamlUtil(os.getcwd() + '/test_data.yaml').read_yaml())
@pytest.mark.usefixtures('geturl')
def test_sign_in_failed(self, browser, login):
usr = login['user']
pwd = login['pwd']
LoginPage.user_login(browser, usr, pwd)



