使用Rest API更新测试用例结果

时间:2014-11-17 18:19:13

标签: java web-services rest testing rally

在Rally中有一个用于测试用例结果更新的Rest Webservice URI。 https://rally1.rallydev.com/slm/webservice/v2.0/testcaseresult/create

有人可以告诉我这应该是什么有效载荷? 可以指出一个有效的例子。

我已经搜索了很多天2天,但找不到我想要的信息。 最接近的是:Rally add test case results in bulk using web services API

但是这也没有帮助..

2 个答案:

答案 0 :(得分:3)

你的有效载荷是多少? 你收到的错误是什么? 您引用的帖子对于以前版本的WS API是正确的。 v2.0不支持XML,只支持JSON。

最低限度,必须在有效负载

中设置以下字段
"{"TestCaseResult":{"Build":"1","Date":"2014-09-04T19:56:05.000Z","TestCase":"/testcase/12358743669","Verdict":"Pass"}}"

这是一个完整的卷曲示例。在Windows上转义双引号:

curl --header "zsessionid:_abc123" -H "Content-Type: application/json" -d"{\"TestCaseResult\":{\"Build\":\"1.0\",\"TestCase\":\"/testcase/12358743669\",\"Date\":\"2014-09-04T19:56:05.000Z\",\"Verdict\":\"Pass\"}}" https://rally1.rallydev.com/slm/webservice/v2.0/TestCaseResult/create

由于您在帖子中使用了java标记,因此这是一个基于Rally Java toolkit的示例。

public class addTCRtoTC {

    public static void main(String[] args) throws URISyntaxException, IOException {
        String host = "https://rally1.rallydev.com";
            String username = "user@co.com";
            String password = "secret";
            String wsapiVersion = "v2.0";
            String projectRef = "/project/2222";      
            String workspaceRef = "/workspace/11111"; 
            String applicationName = "RestExample_AddTCR";

        RallyRestApi restApi = new RallyRestApi(
                new URI(host),
                username,
                password);
        restApi.setWsapiVersion(wsapiVersion);
        restApi.setApplicationName(applicationName);   

        //Read User
        QueryRequest userRequest = new QueryRequest("User");
        userRequest.setFetch(new Fetch("UserName", "Subscription", "DisplayName", "SubscriptionAdmin"));
        userRequest.setQueryFilter(new QueryFilter("UserName", "=", "nick@wsapi.com"));
        QueryResponse userQueryResponse = restApi.query(userRequest);
        JsonArray userQueryResults = userQueryResponse.getResults();
        JsonElement userQueryElement = userQueryResults.get(0);
        JsonObject userQueryObject = userQueryElement.getAsJsonObject();
        String userRef = userQueryObject.get("_ref").getAsString();  
        System.out.println(userRef);

        // Query for Test Case to which we want to add results
        QueryRequest testCaseRequest = new QueryRequest("TestCase");
        testCaseRequest.setFetch(new Fetch("FormattedID","Name"));
        testCaseRequest.setWorkspace(workspaceRef);
        testCaseRequest.setQueryFilter(new QueryFilter("FormattedID", "=", "TC6"));
        QueryResponse testCaseQueryResponse = restApi.query(testCaseRequest);
        JsonObject testCaseJsonObject = testCaseQueryResponse.getResults().get(0).getAsJsonObject();
        String testCaseRef = testCaseQueryResponse.getResults().get(0).getAsJsonObject().get("_ref").getAsString(); 

        try {
            for (int i=0; i<2; i++) {

                //Add a Test Case Result    
                System.out.println(testCaseRef);
                System.out.println("Creating Test Case Result...");
                JsonObject newTestCaseResult = new JsonObject();
                newTestCaseResult.addProperty("Verdict", "Pass");
                newTestCaseResult.addProperty("Date", "2014-03-07T18:00:00.000Z");
                newTestCaseResult.addProperty("Notes", "Some Scheduled Test");
                newTestCaseResult.addProperty("Build", "2.0");
                newTestCaseResult.addProperty("Tester", userRef);
                newTestCaseResult.addProperty("TestCase", testCaseRef);
                newTestCaseResult.addProperty("Workspace", workspaceRef);

                CreateRequest createRequest = new CreateRequest("testcaseresult", newTestCaseResult);
                CreateResponse createResponse = restApi.create(createRequest);  
                if (createResponse.wasSuccessful()) {

                    System.out.println(String.format("Created %s", createResponse.getObject().get("_ref").getAsString()));          

                    //Read Test Case
                    String ref = Ref.getRelativeRef(createResponse.getObject().get("_ref").getAsString());
                    System.out.println(String.format("\nReading Test Case Result %s...", ref));
                    GetRequest getRequest = new GetRequest(ref);
                    getRequest.setFetch(new Fetch("Date", "Verdict"));
                    GetResponse getResponse = restApi.get(getRequest);
                    JsonObject obj = getResponse.getObject();
                    System.out.println(String.format("my Read Test Case Result. Date = %s, Verdict = %s",
                            obj.get("Date").getAsString(), obj.get("Verdict").getAsString()));                 
                } else {
                    String[] createErrors;
                    createErrors = createResponse.getErrors();
                    System.out.println("Error occurred creating Test Case Result: ");
                    for (int j=0; i<createErrors.length;j++) {
                        System.out.println(createErrors[j]);
                    }
                }
            }


        } finally {
            //Release all resources
            restApi.close();
        }   

    } 

}

答案 1 :(得分:0)

正确的有效载荷格式:

    {
        "TestCaseResult": {
            "Build": "1.0",
            "Date": "YYY-MM-DD",
            "TestCase": {
                "_ref": ""
            },
            "TestSet": {
                "_ref": ""
            },
            "Verdict": "Pass",
            "Workspace": {
                "_rallyAPIMajor": "2",
                "_rallyAPIMinor": "0",
                "_ref": "",
                "_refObjectUUID": "",
                "_refObjectName": "",
                "_type": "Workspace"
            }
        }
    }

标题格式: 您可以从Rally Application manager获取API密钥。

Rally_headers = {'ZSESSIONID' : API_KEY, 'Content-Type' : 'application/json', "Accept": "application/json"}

有关更多详细信息,请阅读文档here