pytest参数化进阶
#encoding: utf-8
"""
indirect参数的功能是引用 方法
结合fixture来使用
"""
import pytest
test_username = ["user1", "user2"]
test_password = ["111111", "222222"]
@pytest.fixture(scope="module")
def test_user(request):
username = request.param
print("登录用户名: %s" % username)
return username
@pytest.fixture(scope="module")
def test_psw(request):
password = request.param
print("登录密码:%s" % password)
return password
@pytest.mark.parametrize("test_user", test_username, indirect=True)
@pytest.mark.parametrize("test_psw", test_password, indirect=True)
def test_login(test_user, test_psw):
'''登录账户'''
username = test_user
password = test_psw
print("登录账户为:%s : %s" % (username, password))
assert 1 == 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# hook(钩子函数):在系统函数生效之前。
# 钩子函数就能够先执行,并且能拿到被“钩”的函数的所有参数、变量
# 可以进行加工处理,改变原有函数的功能
#目标是:把case名称变成中文字符
# 定义了pytest_collection_modifyitems,
# 对pytest收集参数产生了效果
def pytest_collection_modifyitems(items):
for item in items:
item.name = item.name.encode('utf-8').decode('unicode_escape')
item._nodeid = item.nodeid.encode('utf-8').decode('unicode_escape')
def pytest_configure(config):
config.addinivalue_line('markers','P0')#P0是在最高级别,所有情况都要回归
config.addinivalue_line('markers','P1')#P1在版本上线前回归
config.addinivalue_line('markers','P2')#P2要求在大版本上线前,进行回归
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上次更新: 2023/09/05, 02:16:11