C'est ma fonction:Python {RobotFramework} Fonction retourne 3 valeurs, mais sur la collecte en 3 variables obtenir "ValueError: trop de valeurs pour déballer"
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
Robot framework file to run the function
L'erreur est:
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='
Veuillez ne pas créer de lien vers une image du code qui exécute le mot-clé. Prenez le temps de copier et coller le code dans la question. –
Qu'avez-vous fait pour le déboguer? Avez-vous essayé de stocker le résultat dans une seule variable, puis d'examiner la variable pour vous assurer qu'elle contient ce que vous supposez qu'elle contient? Même si votre fonction renvoie trois valeurs, le mot clé qui appelle la fonction n'en renvoie peut-être qu'un seul. –
@BryanOakley ... La fonction retourne 3 valeurs et le mot-clé (le nom de la méthode elle-même) appelant la fonction devrait lui aussi renvoyer 3 valeurs. La capture d'écran est du fichier (dans mon cadre de robot) qui appelle la classe et la méthode que j'essaie de lancer. Je ne peux pas stocker les valeurs de retour dans un seul var car j'ai besoin de différentes valeurs spécifiques que ma fonction me donne. Plz dites s'il y a quelque chose d'autre dont vous avez besoin de myside pour comprendre l'erreur ici J'ai essayé – nomoreabond2017