参数化使用
- @pytest.mark.parametrize(argnames, argvalues)
- argnames:要参数化的变量,string(逗号分割),list,tuple
- argvalues:参数化的值,list,list[tuple]
import pytest
# 参数使用string
@pytest.mark.parametrize("a,b", [(10,20), (30,40)])
def test_param(a, b):
print(a+b)
# 参数使用list
@pytest.mark.parametrize(["a","b"], [(10,20), (30,40)])
def test_param(a, b):
print(a+b)
# 参数使用tuple
@pytest.mark.parametrize(("a","b"), [(10,20), (30,40)])
def test_param(a, b):
print(a+b)
参数使用list,就可以使用list的方法,比如 pop、append、insert、reverse等;参数使用tuple就可以使用tuple的方法,如 index、count;参数使用string同上。
yaml 数据参数化
yaml 安装
pip install PyYaml
- 在pycharm中的设置里面进行安装:Project-> Project Interpreter-> + -> 搜索PyYaml -> 点击Install Package
yaml 实现 list
- 10
- 20
- 30
yaml 实现字典
by: id
locator: name
action: click
yaml 进行嵌套
-
- by: id
- locator: name
- action: click
companies:
- 1
id: 1
name: company1
price: 200w
- 2
id: 2
name: company2
price: 500w
结果为:companies: [{id:1, name:company1, price:200w}, {id:2, name:company2, price:500w}]
加载文件
yaml.safe_load(open("./data.yaml"))
实战
data.yaml 文件内容如下:
-
- 10
- 20
-
- 30
- 40
-
- 15
- 13
测试用例如下:
import pytest
import yaml
class TestData:
@pytest.mark.parametrize("a,b",yaml.safe_load(open("data.yaml")))
def test_data(self, a, b):
print(a+b)
运行结果如下:
collecting ... collected 3 items
param_p.py::TestData::test_data[10-20]
param_p.py::TestData::test_data[30-40]
param_p.py::TestData::test_data[15-13]
============================== 3 passed in 0.07s ==============================
Process finished with exit code 0
PASSED [ 33%]30
PASSED [ 66%]70
PASSED [100%]28
下一节:数据驱动(Yaml、JSON、Excel、CSV),包括使用外部数据自动创建用例