[英]Appium + Python(pytest) Parallel Testing Using Parameterization Problem
[英]Python testing with parameterization from function return
我一直在尝试使用pytest
解决 python 测试,但未能找到有效的示例配置 - 尽管有些配置很接近。 这是我的案例研究:
@pytest.fixture
def vil_check():
code
return [(v1,v2,v3), (...), (...)]
@pytest.mark.parameterize("v1,v2,v3", vil_check):
def test_one(v1,v2,v3):
assert v1 < 2
assert v2 > 5
....
我正在尝试遵循此示例:
@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6), ("6*9", 42)])
def test_eval(test_input, expected):
assert eval(test_input) == expected
但是使用fixture
来提供列表: [("3+5", 8), ("2+4", 6), ("6*9", 42)]
。
但是,此配置不起作用:
@pytest.mark.parametrize("v1, v2, v3", vil_check)
def test_max(v1, v2, v3):
assert abs(v1) <= 5
错误是 pytest 没有看到 vil_check 返回可迭代。 似乎有一种方法可以使用pytest_generate_tests
来完成此任务,但我对如何编写它持空白。
根据 OP 的评论,因为vil_check
不需要是夹具,所以您可以执行以下操作 - fixture decorator from
and
在下面it in
:
def vil_check():
# code
yield from [(v1,v2,v3), (...), (...)]
@pytest.mark.parametrize("v1,v2,v3", vil_check()):
def test_one(v1,v2,v3):
assert v1 < 2
assert v2 > 5
# code
几点:
parametrized
,如果你设置了--strict-markers
这可能会给你错误。:
vil_check
中使用了yield from
而不是return
。 如果列表很大,这将是有效的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.