Pytest参数化用例

简介: `Pytest`的参数化功能用于通过参数生成和执行多个测试用例。使用`@pytest.mark.parametrize`装饰器,可传入不同数据,如单参数或多个参数,并可设置`ids`为用例命名。例如,一个搜索功能测试会根据提供的关键词列表动态生成用例。另外,通过创建`conftest.py`文件并定义函数,可以显示中文用例名称。同时,可以利用笛卡尔积实现更复杂的参数组合。

Pytest参数化用例

参数化:通过参数的方式传递数据,从而实现数据与脚本分离,并且可以实现用例的重复生成与执行。
装饰器:@pytest.mark.parametrize

单参数

import pytest

search_list = ["appium","selenium","pytest"]

# 参数化实现测试用例的动态生成
# 第一种:单参数情况,每一条测试数据都会生成一条测试用例
@pytest.mark.parametrize("search_key",["appium","selenium","pytest"," "])
def test_search(search_key):
    assert search_key in search_list

image.png

多参数+ids参数重命名

import pytest

# 第二种:多参数情况
@pytest.mark.parametrize("username,password",[["right","right"],
                                              ["wrong","wrong"],
                                              [" ","right"],
                                              ["right"," "]
                                              ],
                         # 用例重命名-添加 ids 参数,将别名放在列表中
                         # ids=["right username and right password","wrong username and wrong password","username is null","password is null"])
                         # ids支持中文
                         ids=["正确的用户名和密码","错误的用户名和密码","用户名为空","密码为空"])

def test_login(username,password):
    print(f"登录的用户名:{username}, {password}")

image.png

注意:必须在同目录下创建conftest.py文件,将下面内容添加进去,运行脚本后,才可以正常显示中文的重命名。

def pytest_collection_modifyitems(items):
    """
    测试用例收集完成时,将收集到的用例名name和用例标识nodeid的中文信息显示在控制台上
    """
    for i in items:
        i.name=i.name.encode("utf-8").decode("unicode_escape")
        i._nodeid=i.nodeid.encode("utf-8").decode("unicode_escape")

image.png

笛卡尔积

import pytest

@pytest.mark.parametrize("a",[1,2,3])
@pytest.mark.parametrize("b",["你","好","啊"])
@pytest.mark.parametrize("c",["a","b","c"])
def test_param(a,b,c):
    print(f"笛卡尔积形式的参数化中 a={a},b={b},c={c}")

image.png

相关文章
|
测试技术 数据处理
Pytest参数化详解-上
Pytest参数化详解-上
66 0
|
7月前
|
测试技术 数据库
参数化单元测试
参数化单元测试
49 0
|
缓存 测试技术 Python
Pytest用例规范及运行
Pytest用例规范及运行
182 1
|
测试技术
25-pytest-参数化生成用例标题
25-pytest-参数化生成用例标题
25-pytest-参数化生成用例标题
|
测试技术 数据处理
Pytest参数化详解-下
Pytest参数化详解-下
101 0
|
测试技术 Python
pytest--运行指定的测试和参数化
pytest--运行指定的测试和参数化
|
测试技术
09-pytest-parametrize参数化
09-pytest-parametrize参数化
|
测试技术
15-pytest-自定义用例执行顺序
15-pytest-自定义用例执行顺序
|
JSON 测试技术 数据安全/隐私保护
06-Httprunner-参数化
06-Httprunner-参数化
|
测试技术
pytest 用例执行顺序
pytest 用例执行顺序
pytest 用例执行顺序