我有一个带有** keywords参数的函数,我想遍历列表中的参数以测试该函数是否正常工作。但是,当我给参数提供键,值对(例如“ name = joe”)时,python只会在列表中抱怨语法。因此,我破解了一个将参数封装在引号中并使用exec函数调用参数的解决方案。但是,这似乎很麻烦,有没有更好的方法来用许多测试用例测试功能?这是我的代码:

def function(**keywords):
    for key, value in keywords.items():
         print(value)
joe = 'joe'
bug='bug'
parameter_list = ('name=joe, insect=bug', 'name=joe')

# test parameters my hacky way
for parameters in parameter_list:
    # place to test function
    exec('function('+parameters+')', locals(), globals())


如果我不喜欢用这种方法进行测试的原始设计,那么我可以接受其他选择!
谢谢!

最佳答案

您为什么不传递参数字典的元组呢?

def function(**keywords):
    for key, value in keywords.items():
         print(value)

joe = "joe"
bug = "bug"  # if you want an indirection...

parameter_list = ({'name':joe, 'insect':bug}, {'name':joe})
for parameters in parameter_list:
    # place to test function
    function(**parameters)

关于python - 有没有更干净的方法来测试python3中的长参数列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53659185/

10-12 19:26