您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 |

自学教程:Python中pytest的参数化实例解析

51自学网 2023-07-22 10:36:13
  python
这篇教程Python中pytest的参数化实例解析写得很实用,希望能帮到您。

pytest的参数化

参数化多个参数:

可以使用多个参数来参数化测试。例如:

import pytest@pytest.mark.parametrize("x, y, expected", [    (1, 2, 3),    (3, 4, 7),    (5, 6, 11),])def test_addition(x, y, expected):    assert x + y == expected

参数化列表:

可以使用列表来参数化测试。例如:

import pytest@pytest.mark.parametrize("test_input, expected_output", [    ([1, 2, 3], 6),    ([4, 5, 6], 15),    ([7, 8, 9], 24),])def test_sum(test_input, expected_output):    assert sum(test_input) == expected_output

参数化字典:

可以使用字典来参数化测试。例如:

import pytest@pytest.mark.parametrize("test_input, expected_output", [    ({"x": 1, "y": 2}, 3),    ({"x": 3, "y": 4}, 7),    ({"x": 5, "y": 6}, 11),])def test_addition(test_input, expected_output):    assert test_input["x"] + test_input["y"] == expected_output

参数化文件:

可以使用文件来参数化测试。例如:

import pytestimport csvdef read_csv():    with open('testdata.csv', 'r') as f:        reader = csv.reader(f)        rows = []        for row in reader:            rows.append(row)        return rows[1:]@pytest.mark.parametrize("test_input, expected_output", read_csv())def test_addition(test_input, expected_output):    x, y = map(int, test_input.split(','))    assert x + y == int(expected_output)

动态参数化:

可以使用 Python 代码动态生成参数。例如:

import pytestimport timedef get_test_data():    test_data = []    start_time = time.time()    while time.time() - start_time < 10:  # 运行时间小于 10 秒        x = random.randint(1, 100)        y = random.randint(1, 100)        expected = x + y        test_data.append((x, y, expected))    return test_data@pytest.mark.parametrize("x, y, expected", get_test_data())def test_addition(x, y, expected):    assert x + y == expected

从外部数据源加载数据:

可以使用动态参数化从外部数据源加载测试数据,例如数据库、API 或其他 Web 服务。例如:

import pytestimport requestsdef get_test_data():    response = requests.get('https://api.example.com/data')    test_data = []    for item in response.json():        x = item['x']        y = item['y']        expected = item['expected']        test_data.append((x, y, expected))    return test_data@pytest.mark.parametrize("x, y, expected", get_test_data())def test_addition(x, y, expected):    assert x + y == expected

在上面的例子中,get_test_data 函数使用 requests 库从远程 API 加载测试数据,并返回一个测试数据列表。然后,使用 @pytest.mark.parametrize 装饰器动态参数化测试,使用从 API 加载的测试数据作为参数。

组合参数:

可以使用 itertools 库中的 product 函数生成参数的所有组合。例如:

import pytestimport itertools@pytest.mark.parametrize("x, y", itertools.product([1, 2, 3], [4, 5, 6]))def test_multiplication(x, y):    assert x * y == y * x

在上面的例子中,使用 itertools.product 函数生成 x 和 y 的所有组合,并将它们作为参数传递给测试函数。

参数化生成器:

可以使用生成器函数生成参数。例如:

import pytestimport randomdef get_test_data():    while True:        x = random.randint(1, 100)        y = random.randint(1, 100)        expected = x + y        yield (x, y, expected)@pytest.mark.parametrize("x, y, expected", get_test_data())def test_addition(x, y, expected):    assert x + y == expected

到此这篇关于Python中pytest的参数化实例解析的文章就介绍到这了,更多相关pytest的参数化实例解析内容请搜索wanshiok.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持wanshiok.com!


Python基础知识之推导式详解
Python使用嵌套循环实现图像处理算法
51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1