【发布时间】:2014-03-07 13:19:46
【问题描述】:
我在 python 中为机器人框架构建了一个混合库。此 API 的其中一种方法返回一个字符串,我想将它分配给测试中的机器人框架变量。
${sms_1_2}= encrypt_sms_return_ciphered 1@ercom.fr 2@ercom.fr sms1to2
我已经验证了 encrypt_sms_return_ciphered 的 python 代码确实返回了一个字符串。但问题是robotframework变量被赋值为None。
方法代码如下:
@InstanceIndex.check_short_name
def encrypt_sms__return_ciphered(self, sender, receiver, clearsms):
self.encrypt_sms(sender, receiver, clearsms)
ClientIndex.success_if(sender, "isSmsSent", receiver, clearsms)
cipheredsms = self.smsSent[receiver, clearsms]
del self.smsSent[receiver, clearsms]
return cipheredsms
这里是 check_short_name 装饰器的代码:
@staticmethod
def check_short_name(method):
def wrapper(self, short_name, *args, **kwargs):
if short_name != self.short_name:
try:
getattr(self.collection.iterate(), method.__name__)(short_name, *args, **kwargs)
except StopIteration:
raise Exception("item \"%s\" is not a member of %s, or method \"%s\" is not defined for any member of %s" % (short_name, self.collection.name, method.__name__, self.collection.name))
else:
self.collection.rewind()
return method(self, short_name, *args, **kwargs)
return wrapper
【问题讨论】:
标签: python decorator robotframework python-decorators