的Python {RobotFramework}函数返回3个值,但是,收集他们在3个变量获得 “ValueError异常:值过多解压”
这是我的函数:的Python {RobotFramework}函数返回3个值,但是,收集他们在3个变量获得 “ValueError异常:值过多解压”
def postTenant(self, data):
rt = True
result = 'No Error!'
ews_content = {}
Authorization_header = ''
for i in range(0, 5):
try:
# pushchannel_link = '/' + service + '/pushchannels'
link = "https://sereverapi/servername/abc"
h = httplib2.Http(disable_ssl_certificate_validation=True, timeout=60)
resp, content = h.request(link,
'POST',
data,
headers={'content-type': 'application/json'})
print resp
print content
# print type(content)
print resp.status
if resp.status == 200:
rt = True
result = 'No Error!'
print "Tenant created"
ews_content = json.loads(content)
final = (((ews_content["connectinfo"])["authentication"])["basic"])
auth = ('{}:{}'.format(str(final["user"]), str(final["password"])))
auth_encoded = auth.encode('base64')
Authorization_header = 'Basic {}'.format(auth_encoded)
print 'Auth Header generated'
print Authorization_header
print type(Authorization_header)
elif resp.status == 409:
print "Conflict received"
rt = True
result = 'Conflict!'
else:
rt = False
except Exception, strerror:
print 'Exception occurs:' + str(strerror)
rt = False
result = str(strerror)
finally:
print 'Now in finally block'
# GenAuthHeader(content)
if rt:
break;
return rt, result, Authorization_header
的错误是:
Value Error, too many values to unpack
where the values of my return variables as generated by function is : rt = True; result = 'No Error!' and Authorization_header = 'Basic cnVuYXVzZrttttdlajldjf123UVVBRUVdPQlZYQk86JkhiQiVYdVExJktmbFJiQmlSJUB0dWNk NmWER231RGw='
问题在于你整合了Robot Framework和Python代码。从根本上说,Robot Framework允许您使用位于BuiltIn库中的Evaluate
来调用Python式表达式(仅表达式)的评估。如果您的测试设置中存在Execute
,则可能是自定义关键字,而不是正常关键字,因为我无法在任何地方查找文档以查看其返回结果。我在最基本的Robot Framework文档中找到的最接近的数据是Execute Command
,但这可能不是您要查找的内容。
Robot Framework允许您像使用Python代码一样使用Python代码的方式是创建一个新的基于Python的库。这个网站上的文档存在于本网站的其他地方(有几次是我放在那里的,所以你可以通过我的回答问题找出一个简短的地方)。如果您将Python代码重新编写为库格式,那么您可以像调用其他任何关键字一样调用关键字,并且假设您正确设置了它,则在返回三个变量时不应再有任何问题。
Robot Framework没有(据我所知,如果你知道的更好,请更正我)允许你以其他任何方式运行Python代码,而不是我放在这里的两种方式。
编辑:我改正了一个更好的人,但我不熟悉REST调用。但是,我确实知道把它作为一个图书馆应该是有效的。
第三种方式是通过REST调用,这似乎是OP正在做的事情。这个问题似乎是 - 正如你所指出的 - '执行restapi'并不是完全返回'postTenant'返回的结果。 –
请不要链接到运行关键字的代码的图片。花时间将代码复制并粘贴到问题中。 –
你做了什么来调试呢?您是否尝试将结果存储在单个变量中,然后检查变量以确保它包含您认为它包含的内容?即使你的函数返回三个值,也许调用函数的关键字只返回一个。 –
@BryanOakley ...该函数返回3个值,调用该函数的关键字(方法本身的名称)也应使其返回3个值。截图是文件(在我的机器人框架中),它调用我正在尝试运行的类和方法。 我不能将返回值存储在一个单独的变量中,因为我需要不同的具体值,这是我的函数给我的。 Plz告诉你是否还有其他东西需要你从myside中弄清楚这里的错误 我试过了 – nomoreabond2017