Reputation: 29
I am using python rally toolkit version 1.4.2 to perform get and put operations but sometimes whenever I run my code i get this error : """File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyral/rallyresp.py", line 303, in next if (self._served >= self._servable) or (self._limit and self._served >= self._limit): AttributeError: 'RallyRESTResponse' object has no attribute '_servable'"""
On re-running the same code multiple times the code works and sometimes it doesn't. Below is the code in rallyresp.py file which is raising the exception.
if (self._served >= self._servable) or (self._limit and self._served >= self._limit):
raise StopIteration
Here is my complete python code:
class TestExecutionDetails():
def __init__(self):
self.testCaseDetailDict = collections.defaultdict(list)
self.userStoryDetailDict = collections.defaultdict(list)
self.conf = ConfigObj("config.ini")
self.server = self.conf['RallyWS_P']['server']
self.ws = self.conf['RallyWS_P']['workspace']
self.prj = self.conf['RallyWS_P']['project']
self.apikey = self.conf['LoginCredentials']['apikey']
self.userStoryHeaderCount = 0
self.testCaseHeaderCount = 0
print(self.apikey,"\t\t",self.server,"\t\t",self.ws,"\t\t",self.prj)
self.rally = Rally(self.server, apikey=self.apikey, workspace=self.ws, project=self.prj)
self.rally.enableLogging('rally.simple-use.log')
def getTestExecutionInfo(self):
story = self.rally.get('UserStory', query='Release.Name contains "AXP PI 20.2" AND Iteration.Name contains "AXP 20.2.10 IP"', fetch=True,order="Iteration,FormattedID")
if not story.errors:
for s in story:
self.userStoryDetailDict['FormattedID'].append(s.FormattedID)
self.userStoryDetailDict['Iteration'].append(s.Iteration.Name)
self.userStoryDetailDict['Release'].append(s.Release.Name)
self.userStoryDetailDict['LastBuild'].append(s.LastBuild)
self.userStoryDetailDict['LastRun'].append(str(s.LastRun).split('T')[0])
self.userStoryDetailDict['Owner'].append(s.Owner.DisplayName)
self.userStoryDetailDict['TcCount'].append(s.TestCaseCount)
self.userStoryDetailDict['PassingTcCount'].append(s.PassingTestCaseCount)
self.userStoryDetailDict['TcStatus'].append(s.TestCaseStatus)
for t in s.TestCases:
#print(t.Owner,"\t\t",t.Owner.DisplayName)
self.testCaseDetailDict['FormattedID'].append(t.FormattedID)
self.testCaseDetailDict['CreatedBy'].append(t.CreatedBy.DisplayName)
if t.Owner is None:
self.testCaseDetailDict['Owner'].append("None")
else:
self.testCaseDetailDict['Owner'].append(t.Owner.DisplayName)
self.testCaseDetailDict['LastBuild'].append(t.LastBuild)
#self.testCaseDetailDict['LastResult'].append(t.TestCaseResult.Name)
self.testCaseDetailDict['LastRun'].append(str(t.LastRun).split('T')[0])
self.testCaseDetailDict['LastUpdateDate'].append(str(t.LastUpdateDate).split('T')[0])
self.testCaseDetailDict['LastVerdict'].append(t.LastVerdict)
#self.testCaseDetailDict['Attachments'].append(t.Attachement.Name)
self.userStoryHeaderCount = len(self.userStoryDetailDict.keys())
self.testCaseHeaderCount = len(self.testCaseDetailDict.keys())
print(self.testCaseDetailDict)
print(self.userStoryDetailDict)
if __name__ == '__main__':
ted = TestExecutionDetails()
ted.getTestExecutionInfo()
Upvotes: 0
Views: 379
Reputation: 29
As suggested by @ewong, it was indeed a network issue. The connection was getting lost in-between due to internet connectivity as most of us are working at home. The solution I have tried for this is to add max 5 retries.
Upvotes: 0