pythonrestpyral

Getting all the test cases inside the test folder using Pyral api


I have used pyral api

rally = Rally(server, apikey=api_key, workspace=workspace, project=project)

to connect to rally Than ,

  testfolders = rally.get('TestFolder', fetch=True, query=query_criteria) 

I need to extract all the test cases defined in the rally as:

TF*****
  -TC1
  -TC2
  -TC3

I need to get all the test cases from the formattedID returned from testfolders.

for tc in testfolders:
   print(tc.Name)
   print(tc.FormattedID)# this represents the TF***
   tc_link=tc._ref#url for TC's https://rally1.rallydev.com/slm/webservice 
query_criteria = 'TestSets = "%s"' % tp_name
testfolders = rally.get('TestFolder', fetch=True, query=query_criteria)

I have tried looking for different combination sets to extract test cases The tc._ref is actually a

https://rally1.rallydev.com/slm/webservice/v2.0/TestFolder/XXXXX/TestCases

when I tried to open it in browser it gave the entire Test cases list. I need to extract those test case list . I tried accessing using urllib to acess the data using python ,but said unauthorized access, I think if I am on the same session authorization shouldnt be an issue since rally object is already instantiated. Any help on this will be much appreciated!! Thanks in advance

    rally = Rally(server, apikey=api_key, workspace=workspace, project=project)
    tp_name = "specific test case "
    query_criteria = 'FormattedID = "%s"' % tp_name
    testfolders = rally.get('TestFolder', fetch=True, query=query_criteria)
    for tc in testfolders:
         print(tc.Name)
         print(tc.FormattedID)   
         query_criteria = 'TestSets = "%s"' % tc._ref
         response = rally.get('TestCase', fetch=True, query=query_criteria)
         print(response)

422 Could not read: could not read all instances of class com.f4tech.slm.domain.TestCase for class TestCase

Solution

  • It's not clear what you are trying to achieve but please take a look at the code below. Probably, it will solve your issue:

    query = 'FormattedID = %s'
    
    test_folder_req = rally.get('TestFolder', fetch=True, projectScopeDown=True,
                                           query=query % folder_id) # folder_id == "TF111"
    if test_folder_req.resultCount == 0:
        print('Rally returned nothing for folder: %s', folder_id)
        sys.exit(1)
    
    test_folder = test_folder_req.next()
    
    test_cases = test_folder.TestCases
    print('Start working with %s' % folder_id)
    print('Test Folder %s contains %s TestCases' % (folder_id, len(test_cases)))
    
    for test_case in test_cases:
        print(test_case.FormattedID)
        print(test_case.Name)