0
tests_arr = ['test1','test2']
logs_arr = ['log1','log2']
def List_of_Tests():     
    tests = tests_arr    
    return tests

def List_of_Logs():     
    logs = logs_arr    
    return logs



@pytest.mark.parametrize("test, log",
                         [
                             ([i for i in List_of_Tests()], [i for i in List_of_Logs()])
                         ]
                         )
def methodname(test,log):
    print(test+ " " + log)

当我尝试动态传递列表项时,出现以下错误

TypeError:预期的 str、字节或 os.PathLike 对象,而不是列表

4

1 回答 1

0

我不确定你想要什么参数化,但我猜:

test_foo/test_stuff.py::test_stuff[test1-log1] PASSED                                                                                                                                                       [ 50%]
test_foo/test_stuff.py::test_stuff[test2-log2] PASSED                                                                                                                                                       [100%]

那么你应该使用zip。

import pytest

tests_arr = ['test1','test2']
logs_arr = ['log1','log2']

def List_of_Tests():
    return tests_arr

def List_of_Logs():
    return logs_arr

@pytest.mark.parametrize("test, log", zip(List_of_Tests(), List_of_Logs()))
def test_stuff(test, log):
    pass

但是你在做什么看起来很奇怪,你考虑过使用pytest_generate_tests吗?

于 2021-05-26T13:39:44.060 回答