【发布时间】:2020-08-29 02:40:18
【问题描述】:
我想将下面的列表从我的命令行传递给我的 pytest 代码(如 python 中的 argparser),谁能帮助我如何做到这一点?
pytest -vs test_sample.py --html=results.html --A_list=['A1', 'A2'] --B_list=['B1'] --C_list=['C1', 'C2']
这是我的 pytest 代码。
import pytest
@pytest.fixture(scope="session", params=A_list) # here A_list is a list and it has to be passed from command line
def get_A_list(request):
print("inside fixture get_A_list - element in A_list: ".format(request.param))
yield request.param
@pytest.fixture(scope="module", params=B_list) # here B_list is a list and it has to be passed from command line
def get_B_list(request, get_A_list):
print("inside fixture get_B_list - element in A_list: {}, element in B_list: {}: ".format(get_A_list, request.param))
yield request.param
@pytest.mark.parametrize("c", C_list) # here C_list is a list and it has to be passed from command line
def test_functionality(get_A_list, get_B_list, c):
print("inside function test_functionality - element in A_list: {}, element in B_list: {}, element in C_list: {}: ".format(get_A_list, get_B_list, c))
test_functionality 是我的测试用例函数。测试用例的数量应该基于命令行中传递的列表的长度
对于上述列表,它必须按以下顺序执行测试用例。
test_functionality[A1-B1-C1]
test_functionality[A1-B1-C2]
test_functionality[A2-B1-C1]
test_functionality[A2-B1-C2]
我需要使用 A_list 中的元素在 **fixture get_A_list 中执行一些操作 ....类似地,我需要使用 A_list 和 B_list 中的元素在fixture get_B_list 中执行一些操作 .......像这样我有 4 个夹具,最后我需要在 test_functionality 中执行测试用例,这将使用 A_list 、 B_list 、 C_list 等中的元素。
最后输出应该如下所示..
inside fixture get_A_list - element in A_list: A1
inside fixture get_B_list - element in A_list: A1, element in B_list: B1
inside function test_functionality - element in A_list: A1, element in B_list: B1, element in C_list: C1
inside function test_functionality - element in A_list: A1, element in B_list: B1, element in C_list: C2
inside function test_functionality - element in A_list: A1, element in B_list: B1, element in C_list: C3
inside fixture get_A_list - element in A_list: A2
inside fixture get_B_list - element in A_list: A2, element in B_list: B1
inside function test_functionality - element in A_list: A2, element in B_list: B1, element in C_list: C1
inside function test_functionality - element in A_list: A2, element in B_list: B1, element in C_list: C2
inside function test_functionality - element in A_list: A2, element in B_list: B1, element in C_list: C3
【问题讨论】:
标签: python python-3.x pytest