的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='

+0

请不要链接到运行关键字的代码的图片。花时间将代码复制并粘贴到问题中。 –

+0

你做了什么来调试呢?您是否尝试将结果存储在单个变量中,然后检查变量以确保它包含您认为它包含的内容?即使你的函数返回三个值,也许调用函数的关键字只返回一个。 –

+0

@BryanOakley ...该函数返回3个值,调用该函数的关键字(方法本身的名称)也应使其返回3个值。截图是文件(在我的机器人框架中),它调用我正在尝试运行的类和方法。 我不能将返回值存储在一个单独的变量中,因为我需要不同的具体值,这是我的函数给我的。 Plz告诉你是否还有其他东西需要你从myside中弄清楚这里的错误 我试过了 – nomoreabond2017

问题在于你整合了Robot Framework和Python代码。从根本上说,Robot Framework允许您使用位于BuiltIn库中的Evaluate来调用Python式表达式(仅表达式)的评估。如果您的测试设置中存在Execute,则可能是自定义关键字,而不是正常关键字,因为我无法在任何地方查找文档以查看其返回结果。我在最基本的Robot Framework文档中找到的最接近的数据是Execute Command,但这可能不是您要查找的内容。

Robot Framework允许您像使用Python代码一样使用Python代码的方式是创建一个新的基于Python的库。这个网站上的文档存在于本网站的其他地方(有几次是我放在那里的,所以你可以通过我的回答问题找出一个简短的地方)。如果您将Python代码重新编写为库格式,那么您可以像调用其他任何关键字一样调用关键字,并且假设您正确设置了它,则在返回三个变量时不应再有任何问题。

Robot Framework没有(据我所知,如果你知道的更好,请更正我)允许你以其他任何方式运行Python代码,而不是我放在这里的两种方式。

编辑:我改正了一个更好的人,但我不熟悉REST调用。但是,我确实知道把它作为一个图书馆应该是有效的。

+1

第三种方式是通过REST调用,这似乎是OP正在做的事情。这个问题似乎是 - 正如你所指出的 - '执行restapi'并不是完全返回'postTenant'返回的结果。 –