TestCase defined under TestFolder on Rally not getting updated by pyral

71 Views Asked by At

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?

1

There are 1 best solutions below

0
Jean-Francois T. On BEST ANSWER

You are mixing 2 functions:

  • rally.put: to create a new WorkItem
  • rally.update: to modify an existing WorkItem

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.