Pytest:通过函数创建测试参数:使用 MarkGenerator 触发弃用警告
Pytest: Creating tests parameters via a function: Using MarkGenerator trigger a deprecation warning
所以,为了在多个测试中重复使用测试参数,我有时会这样做:
def parameters():
from _pytest.mark import MarkGenerator
generator = MarkGenerator()
return generator.parametrize("the_argument, the_result", [(1, 2), (2, 4)])
@parameters():
def test_multiplication("the_argument, the_result"):
pass
Pytest 现在发布 PytestDeprecationWarning: A private pytest class or function was used.
并且文档说 this is going to become an hard error
所以我的问题是,如何以合法的方式做完全相同的事情?
像这样:
import pytest
parameters = pytest.mark.parametrize(
"the_argument, the_result",
[(1, 2), (2, 4)],
)
@parameters
def test_multiplication(the_argument, the_result):
pass
@parameters
def test_multiplication_2(the_argument, the_result):
pass
简单解释一下,装饰器是对象,就像 python 中的其他所有对象一样,所以没有什么能阻止我们稍后将它们分配给 use/reuse 的变量。
所以,为了在多个测试中重复使用测试参数,我有时会这样做:
def parameters():
from _pytest.mark import MarkGenerator
generator = MarkGenerator()
return generator.parametrize("the_argument, the_result", [(1, 2), (2, 4)])
@parameters():
def test_multiplication("the_argument, the_result"):
pass
Pytest 现在发布 PytestDeprecationWarning: A private pytest class or function was used.
并且文档说 this is going to become an hard error
所以我的问题是,如何以合法的方式做完全相同的事情?
像这样:
import pytest
parameters = pytest.mark.parametrize(
"the_argument, the_result",
[(1, 2), (2, 4)],
)
@parameters
def test_multiplication(the_argument, the_result):
pass
@parameters
def test_multiplication_2(the_argument, the_result):
pass
简单解释一下,装饰器是对象,就像 python 中的其他所有对象一样,所以没有什么能阻止我们稍后将它们分配给 use/reuse 的变量。