python 如何封装在某带参数函数之后等待时间?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 如何封装在某带参数函数之后等待时间?相关的知识,希望对你有一定的参考价值。
比如,要实现一步步的操作,每个都要等待一会
func1( )
time.sleep(2)
func2( )
time.sleep(3)
……
尝试了这样封装
def oper_wait(func, wait_time=2):
func( )
time.sleep(wait_time)
oper_wait(func1, wait_time=2)
oper_wait(func2, wait_time=3)
但是,对于必须带参数的函数,要怎么封装?
比如
def add(a,b)
return a+b
oper_wait(add(1,2), wait_time=2)
这样就肯定会报错
题主你好,
方法及相应代码见截图:
*.方法不只一种, 题主看看如果不合适请追问. 上面这种做法的好处是封装的这个函数func可以带任意多个位置参数. //就图主的问题来看, *args就够了, 如果func函数中还有关键字参数,则还需要使用**argv.
-----
希望可以帮到题主, 欢迎追问
感谢,此方法较符合我要求,具体还是有些问题,
原始函数,是ui2 库里的,例如,打开某个app后,点击某个按钮,再退出
d = uiautomator2.connect( )
d.app_start("apk_name")
d(resourceId="button_name").click( )
d.app_clear("apk_name")
我需要一步都等待一点时间的需求就是从这里来的,结合您的方法应怎样
你是做测试的?
追问是的,测试
刚才试验了,用
oper_wait(d.app_start, "apk_name")就行了
感谢
客气^^
参考技术A这种问题最好是使用包装器,下面是一个例子:
import time
def f(func=None,wait_time=2):
def g(func):
def h(*args,**kwargs):
time.sleep(wait_time)
return func(*args,**kwargs)
return h
return g(func) if func else g
#wait_time使用默认值2
@f
def add(a,b):
return a+b
#wait_time使用值6
@f(wait_time=6)
def sub(a,b):
return a-b
#调用
print(add(1,2),sub(2,1))
这是截图:
参考技术B def oper_wait(func,argc=(),kg=, wait_time=2):func(*argc,**kg)
time.sleep(wait_time)
def funa(a,b,c=1,d=9):
print a
print b
print c
print d
oper_wait(funa,argc=(5,7),kg=, wait_time=2)
oper_wait(funa,argc=(5,7),kg='c':1,'d':'ok', wait_time=2) 参考技术C
用装饰器啊
如何通过Timer将等待时间参数化
场景:当taskA执行结束后,等待到指定时间点后(该时间点是参数化的,而非固定写死的时间点),再执行下一个taskB
解决方案:
1) 在创建一个workflow变量,如$$Time, 它的必须类型是date/time类型
2) taskA之后创建一个assignment task,将$$Time值设定为指定的时间点
注意:指定的时间点的表达式返回值必须是date/time类型,并且格式必须是MM-DD-YYYY HH24:MI:SS
3) 在Timer task里使用变量$$Time
整体流程:
taskA --> assginment --> timer --> taskB
参考链接:https://kb.informatica.com/howto/6/Pages/1/150704.aspx
以上是关于python 如何封装在某带参数函数之后等待时间?的主要内容,如果未能解决你的问题,请参考以下文章