从列表中运行函数

2024-09-29 21:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要测试一个工作流,其中所有页面的顺序相同,但测试时不知道用户从何处开始。所有单独的页面都有单独的带有参数的函数。它们彼此独立运行,我希望保持这种方式

我以为我可以将所有函数存储在一个列表中,然后传递一个变量来指示在列表中从何处开始,但是当我定义列表时,它只运行函数!有没有办法解决这个问题

这是我在发现函数正在运行之前所做的

teststeps = [page1(param1, param2), page2(param1, param2), page3(param1, param2), page4(param1, param2
teststepnumber = determinepage(param1, param2)
for item in teststeps[teststepnumber:]:
**Incomplete because I couldn't figure out how to run the functions**

Tags: 函数用户列表参数定义顺序方式页面
3条回答

您只需将函数本身(而不是实际调用它们的结果)放入列表中,以便在以后的步骤中调用它们:

test_steps = [page1, page2, page3, page4]
test_step_number = determine_page(param1, param2)
for test_step in test_steps[test_step_number:]:
    test_step(param1, param2)

定义列表时,函数会立即运行,因为它们是用()调用的。解决此问题的一种方法是创建元组列表,其中第一项是函数,第二项是参数列表

test_funcs = [(page1, [param1, param2]), (page2, [param1, param2])]
for test_func in test_funcs:
    f, args = test_func
    f(*args)

可以,您可以将函数及其参数存储在元组列表中:

teststeps = [(page1,param1, param2), (page2,param1, param2), (page3,param1, param2), (page4,param1, param2)]
teststepnumber = determinepage(param1, param2)
for item in teststeps[teststepnumber:]:
    f,*args = item
    f(*args)

行:f,*args = item提供函数f和所有参数*args

然后行f(*args)调用带有适当数量参数的函数f

相关问题 更多 >

    热门问题