saumya
saumya

Reputation: 13

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?

Upvotes: 0

Views: 76

Answers (1)

Jean-Francois T.
Jean-Francois T.

Reputation: 12930

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.

Upvotes: 0

Related Questions