Forum Discussion
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'});
}
Hello I am using this code to try out TestRail integration myself, however I'm having difficulties handling the object returned from TestRail.
Currently the only way I am able to retrieve data is using the methods you described:
var caseId = jobject.Item('case_id').Value_2.m_value;
var runId = jobject.Item('run_id').Value_2.m_value;
Any way I try to read the data or keys outside of these two lines, I get an empty string.
so a few questions:
1) What type of object is this? (I originally thought JSON but I am unable to use JSON properties to convert to javascript object)
2) Where does "Value_2.m_value" come from?
3) How can I get the keys for 'Item(<key>)' for all items of this object?
Thank you!
Related Content
- 8 years ago
- 12 years ago
Recent Discussions
- 5 days ago
- 5 days ago