pythonrallypyral

TestCase defined under TestFolder on Rally not getting updated by pyral


I'm not able to update the testCase defined on Rally using pyral

Below is the code snippet I am using:

# Get the testcase that needs to be updated
query_criteria = 'FormattedID = "%s"' % tc
rally_response = rally_obj.get('TestCase', fetch=True, query=query_criteria)

target_project = rally.getProject()
testcase_fields = {
         "Project"     : target_project.ref,
         "Workspace"   : "workspace/59461540411",
         "Name"        : "test",
         "Method"      : "Automated",
         "Type"        : "Acceptance",
         "Notes"       : "netsim testing",
         "Description" : "description changing",
         #"TestCase"    : "testcase/360978196712"
        }

testcase_response = rally.put('TestCase', testcase_fields)

The status code of the testcase_response is "200" , but the Test Case is not updated.

What is wrong?


Solution

  • You are mixing 2 functions:

    When you modify an item, you need the reference, FormattedID, or Object ID of the Workitem.

    Your code should look like something like that:

    # Get the testcase that needs to be updated
    
    import logging
    
    logging.basicConfig(format="%(levelname)s:%(module)s:%(lineno)d:%(msg)s")
    
    
    def get_test_case(tcid):
        """Retrieve Test Case from its ID, or None if no such TestCase id"""
        query_criteria = "FormattedID = %s" % tcid
        try:
            response = rally_obj.get('TestCase', fetch=True, query=query_criteria)
            return response.next()
        except StopIteration:
            logging.error("Test Case '%s' not found" % tcid)
            return None
    
    
    target_project = rally.getProject()
    test_case = get_test_case("TC1234")
    if test_case:
        testcase_fields = {
                 "FormattedID" : test_case.FormattedID 
                 "Project"     : target_project.ref,
                 "Workspace"   : "workspace/59461540411",  # might not be necessary if you don't change it
                 "Name"        : "test",
                 "Method"      : "Automated",
                 "Type"        : "Acceptance",
                 "Notes"       : "netsim testing",
                 "Description" : "description changed",
                }
    
        testcase_response = rally.update('TestCase', testcase_fields)
        print(testcase_response)
    

    NOTE: you don't have to have double quotes " in the query.