如何在 pytest 的同一脚本中使用相同的夹具 运行 两个不同的测试函数
How to use the same fixture to run two different test functions in same script in pytest
@pytest.mark.parametrize 允许在测试函数或 class.
中定义多组参数和固定装置
这似乎意味着 pytest.mark.parametrize 可以使用多组 fixture 将测试标记为 运行?我可以找到很多参数化参数的例子,但我无法弄清楚如何使用 pytest.mark.parametrize .
等相同的夹具来参数化不同的测试函数
注意我正在尝试做这样的事情:
import pytest
from Test_cases import math_func
from Test_cases import sample
@pytest.mark.parametrize("num1, num2, result",[(2, 3, 5),(2.2, 3.3, 5.5),])
def test_add(num1, num2, result):
assert math_func.add(num1, num2) == result
@pytest.mark.parametrize("str1, str2, result",[('hello', ' world', 'hello world'),])
def test_string_add(str1, str2, result):
assert sample.string_add(str1, str2) == result
但是如何使用相同的标记夹具组合两个不同的函数,如 add 和 string_add。我不想多次使用 mark fixture(因为我有很多测试函数要执行)或者 pytest 中是否还有其他替代方法。
首先检查您是否真的想合并这些测试。至少对于那个简单的例子,它没有多大意义。测试中有一点重复是可以的,这里的可读性更重要。
也就是说,如果您仍然想这样做,您可以将要测试的函数添加为额外参数:
@pytest.mark.parametrize("fct, arg1, arg2, result",
[(math_func.add, 2, 3, 5),
(math_func.add, 2.2, 3.3, 5.5),
(sample.string_add, 'hello', ' world', 'hello world')])
def test_functions(fct, arg1, arg2, result):
assert fct(arg1, arg2) == result
@pytest.mark.parametrize 允许在测试函数或 class.
中定义多组参数和固定装置这似乎意味着 pytest.mark.parametrize 可以使用多组 fixture 将测试标记为 运行?我可以找到很多参数化参数的例子,但我无法弄清楚如何使用 pytest.mark.parametrize .
等相同的夹具来参数化不同的测试函数注意我正在尝试做这样的事情:
import pytest
from Test_cases import math_func
from Test_cases import sample
@pytest.mark.parametrize("num1, num2, result",[(2, 3, 5),(2.2, 3.3, 5.5),])
def test_add(num1, num2, result):
assert math_func.add(num1, num2) == result
@pytest.mark.parametrize("str1, str2, result",[('hello', ' world', 'hello world'),])
def test_string_add(str1, str2, result):
assert sample.string_add(str1, str2) == result
但是如何使用相同的标记夹具组合两个不同的函数,如 add 和 string_add。我不想多次使用 mark fixture(因为我有很多测试函数要执行)或者 pytest 中是否还有其他替代方法。
首先检查您是否真的想合并这些测试。至少对于那个简单的例子,它没有多大意义。测试中有一点重复是可以的,这里的可读性更重要。
也就是说,如果您仍然想这样做,您可以将要测试的函数添加为额外参数:
@pytest.mark.parametrize("fct, arg1, arg2, result",
[(math_func.add, 2, 3, 5),
(math_func.add, 2.2, 3.3, 5.5),
(sample.string_add, 'hello', ' world', 'hello world')])
def test_functions(fct, arg1, arg2, result):
assert fct(arg1, arg2) == result