测试学习
fixture
fixture 作用域
1 | 1. 默认为function,每次调用都会执行一次/新建一次 |
yield 的作用
1 | yield是return的增强版 |
外置化参数
1 |
|
获取标记的数据
1 |
|
工厂模式fixture
1 |
|
参数化fixture
- 简单参数化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import pytest
)
def user_data(request):
return request.param
def test_user_info(user_data):
assert "name" in user_data
assert user_data["age"] > 0
assert user_data["role"] in ["admin", "user", "moderator"]
print(f"测试用户: {user_data['name']} ({user_data['role']})")
- 类中参数化
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
26class User:
# 魔术方法,初始化时调用
def __init__(self, name, email, is_active=True):
self.name = name
self.email = email
self.is_active = is_active
# 魔术方法,打印对象时调用
def __repr__(self):
return f"User({self.name}, {self.email}, active={self.is_active})"
# 在这个注解就以及创建了实例
)
def user_instance(request):
# 返回参数
return request.param
def test_user_instance(user_instance):
assert "@" in user_instance.email
assert len(user_instance.name) > 0
# python参数化会使每个参数都执行一次
print(f"测试用户实例: {user_instance}")
- 动态生成参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19def generate_test_data():
"""动态生成测试数据"""
return [
(i, i * 2, f"数据{i}") for i in range(1, 4)
]
def dynamic_data(request):
input_val, expected, description = request.param
return {
"input": input_val,
"expected": expected,
"desc": description
}
def test_dynamic_data(dynamic_data):
result = dynamic_data["input"] * 2
assert result == dynamic_data["expected"]
print(f"{dynamic_data['desc']}: {dynamic_data['input']} * 2 = {result}")
- 带id的参数
1 |
|
selenium
1 |
- 动态生成参数
1 |
- 动态生成参数
1 |
- 动态生成参数
1 |
- 动态生成参数
1 |
- 动态生成参数
1 |
- 动态生成参数
1 |
评论



