当前位置:实例文章 » 其他实例» [文章]pytest 参数化进阶

pytest 参数化进阶

发布人:shili8 发布时间:2025-01-02 23:23 阅读次数:0

**Pytest 参数化进阶**

在前面的文章中,我们已经学习了如何使用 Pytest 进行参数化测试。然而,Pytest 的参数化功能远不止于此。在本文中,我们将深入探讨 Pytest 参数化的进阶主题。

###1. 使用 `@pytest.mark.parametrize` 装饰器我们先来回顾一下最基本的参数化方式:使用 `@pytest.mark.parametrize` 装饰器。这个装饰器允许我们传递多个测试用例给一个单独的测试函数。

import pytest@pytest.mark.parametrize("input,expected", [
 (1,2),
 (2,4),
 (3,6)
])
def test_add(input, expected):
 assert input + input == expected

在这个例子中,我们使用 `@pytest.mark.parametrize` 装饰器传递三个测试用例给 `test_add` 函数。

###2. 使用 `parametrize` 函式除了使用装饰器之外,我们还可以使用 `parametrize` 函式来进行参数化。
import pytest@pytest.fixture(params=[
 (1,2),
 (2,4),
 (3,6)
])
def input_data(request):
 return request.paramdef test_add(input_data):
 assert input_data[0] + input_data[0] == input_data[1]

在这个例子中,我们使用 `parametrize` 函式来传递三个测试用例给 `test_add` 函数。

###3. 使用 `@pytest.mark.parametrize` 装饰器的多个参数我们可以使用 `@pytest.mark.parametrize` 装饰器传递多个参数。
import pytest@pytest.mark.parametrize("input1,input2,expected", [
 (1,2,3),
 (2,4,6),
 (3,6,9)
])
def test_add(input1, input2, expected):
 assert input1 + input2 == expected

在这个例子中,我们使用 `@pytest.mark.parametrize` 装饰器传递三个参数给 `test_add` 函数。

###4. 使用 `parametrize` 函式的多个参数我们可以使用 `parametrize` 函式传递多个参数。
import pytest@pytest.fixture(params=[
 (1,2,3),
 (2,4,6),
 (3,6,9)
])
def input_data(request):
 return request.paramdef test_add(input_data):
 assert input_data[0] + input_data[1] == input_data[2]

在这个例子中,我们使用 `parametrize` 函式传递三个参数给 `test_add` 函数。

###5. 使用 `@pytest.mark.parametrize` 装饰器的多个参数和多个测试用例我们可以使用 `@pytest.mark.parametrize` 装饰器传递多个参数和多个测试用例。
import pytest@pytest.mark.parametrize("input1,input2,expected", [
 (1,2,3),
 (2,4,6),
 (3,6,9)
])
def test_add(input1, input2, expected):
 assert input1 + input2 == expected

在这个例子中,我们使用 `@pytest.mark.parametrize` 装饰器传递三个参数和三个测试用例给 `test_add` 函数。

###6. 使用 `parametrize` 函式的多个参数和多个测试用例我们可以使用 `parametrize` 函式传递多个参数和多个测试用例。
import pytest@pytest.fixture(params=[
 (1,2,3),
 (2,4,6),
 (3,6,9)
])
def input_data(request):
 return request.paramdef test_add(input_data):
 assert input_data[0] + input_data[1] == input_data[2]

在这个例子中,我们使用 `parametrize` 函式传递三个参数和三个测试用例给 `test_add` 函数。

###7. 使用 `@pytest.mark.parametrize` 装饰器的多个参数和多个测试用例,且测试用例为字典我们可以使用 `@pytest.mark.parametrize` 装饰器传递多个参数和多个测试用例,且测试用例为字典。
import pytest@pytest.mark.parametrize("input1,input2,expected", [
 {"a":1, "b":2, "c":3},
 {"d":2, "e":4, "f":6},
 {"g":3, "h":6, "i":9}
])
def test_add(input1, input2, expected):
 assert input1["a"] + input2["b"] == expected["c"]

在这个例子中,我们使用 `@pytest.mark.parametrize` 装饰器传递三个参数和三个测试用例,且测试用例为字典给 `test_add` 函数。

###8. 使用 `parametrize` 函式的多个参数和多个测试用例,且测试用例为字典我们可以使用 `parametrize` 函式传递多个参数和多个测试用例,且测试用例为字典。
import pytest@pytest.fixture(params=[
 {"a":1, "b":2, "c":3},
 {"d":2, "e":4, "f":6},
 {"g":3, "h":6, "i":9}
])
def input_data(request):
 return request.paramdef test_add(input_data):
 assert input_data["a"] + input_data["b"] == input_data["c"]

在这个例子中,我们使用 `parametrize` 函式传递三个参数和三个测试用例,且测试用例为字典给 `test_add` 函数。

###9. 使用 `@pytest.mark.parametrize` 装饰器的多个参数和多个测试用例,且测试用例为列表我们可以使用 `@pytest.mark.parametrize` 装饰器传递多个参数和多个测试用例,且测试用例为列表。
import pytest@pytest.mark.parametrize("input1,input2,expected", [
 [1,2,3],
 [2,4,6],
 [3,6,9]
])
def test_add(input1, input2, expected):
 assert input1[0] + input2[1] == expected[2]

在这个例子中,我们使用 `@pytest.mark.parametrize` 装饰器传递三个参数和三个测试用例,且测试用例为列表给 `test_add` 函数。

###10. 使用 `parametrize` 函式的多个参数和多个测试用例,且测试用例为列表我们可以使用 `parametrize` 函式传递多个参数和多个测试用例,且测试用例为列表。
import pytest@pytest.fixture(params=[
 [1,2,3],
 [2,4,6],
 [3,6,9]
])
def input_data(request):
 return request.paramdef test_add(input_data):
 assert input_data[0] + input_data[1] == input_data[2]

在这个例子中,我们使用 `parametrize` 函式传递三个参数和三个测试用例,且测试用例为列表给 `test_add` 函数。

### 总结本文介绍了 Pytest 参数化的进阶主题。我们学习了如何使用 `@pytest.mark.parametrize` 装饰器和 `parametrize` 函式进行参数化测试。我们还学习了如何传递多个参数和多个测试用例,且测试用例为字典或列表。这些知识将有助于你更好地掌握 Pytest 参数化的使用。

其他信息

其他资源

Top