Forum Discussion
schef
New Contributor
I implemented a solution (in JScript) using the .NET api bindings from the testrail website:
// Note: this functionality depends on 3rd party .NET libraries that needed to be compiled by you. We downloaded the testrail .NET api bindings // from the testrail website, along with the Json.NET library. Using visual Studio 2010, we built the Gurock.TestRail library, referencing the Newtonsoft.Json // library. We built x86 and x64 versions using .NET 3.5. In this project, the libraries are stored in a folder next to the project, and have // already been linked to the project via the CLR bridge. testrail = {}; // Use these methods for updating test case statuses in TestRail // Use the methods testrail.passCase, testrail.failCase, testrail.blockedCase, and testrail.retestCase to add case results. // The methods require the run id and the case id // A run id in test rail is formatted like 'R4683'. Remove the letter R from the beginning and just supply the integer. // A case id in test rail is formatted like 'C866870'. Remove the letter C from the beginning and just supply the integer. // // Supplying the additionalFields json object is optional. The request fields can be found in the add_result method definition // of the api at http://docs.gurock.com/testrail-api2/reference-results // e.g. {comment: '<A comment to be logged in the result record>', version: '<free form version info>'} testrail.passCase = function(runId, caseId, additionalFields) { testrail.addStatusAndResultForCase(runId, caseId, additionalFields, 1); }; testrail.failCase = function(runId, caseId, additionalFields) { testrail.addStatusAndResultForCase(runId, caseId, additionalFields, 5); }; testrail.blockedCase = function(runId, caseId, additionalFields) { testrail.addStatusAndResultForCase(runId, caseId, additionalFields, 2); }; testrail.retestCase = function(runId, caseId, additionalFields) { testrail.addStatusAndResultForCase(runId, caseId, additionalFields, 4); }; testrail.runIdAndCaseIdFromTestId = function(testId) { test = testrail.getTest(testId); caseId = test.Item('case_id').Value_2.m_value; runId = test.Item('run_id').Value_2.m_value; return {runId: runId, caseId: caseId}; }; // Support functions for the above functions. These do not need to be called directly outside of this file. testrail.addStatusAndResultForCase = function(runId, caseId, additionalFields, statusId) { additionalFields = additionalFields || {}; additionalFields.status_id = statusId; testrail.addResultForCase(runId, caseId, additionalFields); }; testrail.addResultForCase = function(runId, caseId, additionalFields) { dataObj = testrail.dataDictonary(additionalFields); testrail.sendPost("add_result_for_case/" + runId + "/" + caseId, dataObj); }; testrail.getTest = function(testId) { result = testrail.sendGet('get_test/' + testId); return result; }; testrail.sendPost = function(apiArgsAsString, dataDictionaryObj) { testrail.apiClient().SendPost(apiArgsAsString, dataDictionaryObj); }; testrail.sendGet = function(apiArgumentString) { results = testrail.apiClient().SendGet(apiArgumentString); return results; }; testrail.dataDictonary = function(jsonObj) { var dataD = dotNET.System_Collections.Hashtable.zctor(); for (var key in jsonObj) { if (jsonObj.hasOwnProperty(key)) { dataD.Add(key, jsonObj[key]); } } return dataD; }; testrail.apiClient = function() { var client = dotNET.Gurock_TestRail.APIClient.zctor("https://testrail.blahblah1234.com/testrail/");
client.User = "bojack.horseman@blahblah1234.com";
client.Password = "api_key_from_your_testrail_instance_instead_of_users_pwd";
return client;
};
//TODO: add error handling
//TODO: implement the add_results api call so we can do a bulk update instead of calling add_result_for_case for each case
Usage:
//USEUNIT TestRail
function testUpdateTestRail() {
testrail.retestCase(4683, 866867);
testrail.passCase(4683, 866868, {version: 'Build 10.0.0.1234'});
testrail.blockedCase(4683, 866869, {comment: 'Blocked due to JIRA-4321'}); testrail.failCase(4683, 866870, {comment: 'Failed. JIRA-5678 logged.', version: 'Build 10.0.0.1234'});
}
cbeal
9 years agoNew Member
Can you tell me it your integration was successful? I am looking at trying the same integration.
Were you able to get results from Test Complete to automatically update TestRail?
What was involved, what issues had to be overcome.
Thanks!
Related Content
- 3 years ago
- 12 years ago
Recent Discussions
- 3 days ago