我有一个使用目录中的文件作为参数的代码:
def get_testcases(directory):
files = list(os.listdir(directory))
testcases = filter(lambda x: x.endswith('.yaml'), files)
for testcase in testcases:
postconf = testcase.replace('.yaml', '.conf')
yield (
os.path.join(directory, testcase),
os.path.join(directory, postconf)
)
def get_pre_configs(directory):
for file in os.listdir(directory):
if file.endswith('.conf'):
yield os.path.join(directory, file)
@pytest.mark.parametrize("pre_config", get_pre_configs('pre_configs'))
@pytest.mark.parametrize("testcase_declaration, testcase_result", get_testcases('testcases'))
def test_foo(pre_config, testcase_declaration, testcase_result):
assert testcase_declaration
assert testcase_result
assert pre_config
它可以按我的需要工作,但我不喜欢 pytest 输出:
test_interface.py::test_foo[testcases/up.yaml-testcases/up.conf-pre_configs/bad.conf] PASSED [ 16%]
test_interface.py::test_foo[testcases/up.yaml-testcases/up.conf-pre_configs/simple.conf] PASSED [ 33%]
test_interface.py::test_foo[testcases/up.yaml-testcases/up.conf-pre_configs/complicated.conf] PASSED [ 50%]
test_interface.py::test_foo[testcases/down.yaml-testcases/down.conf-pre_configs/bad.conf] PASSED [ 66%]
test_interface.py::test_foo[testcases/down.yaml-testcases/down.conf-pre_configs/simple.conf] PASSED [ 83%]
test_interface.py::test_foo[testcases/down.yaml-testcases/down.conf-pre_configs/complicated.conf] PASSED [100%]
有没有办法为测试显示与传递给测试的值不同的名称?我想从文件名中删除目录名称和扩展名(仅用于测试名称,我想将它们“按原样”传递给测试)。