TestComplete support for automating REST API
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
TestComplete support for automating REST API
Hi folks,
I have to automate REST API's using TestComplete. According to a previous thread REST-web-services, there was no support for automating REST API's at that time. I could not find it the current documentations.
Is it still not available in the latest versions of TestComplete?
Regards,
Obaid Shirwani
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Obaid,
I ended up automating these programmatically using javascript without any explicit support from TestComplete, though my tests still run from TC.
Here's some sample code:
function v2_getVirtualCardNumber (token , memberID, progUDK)
{
var message = baseURL + "v2/" + progUDK + "/members/" + memberID + "/cards" ;
return http_request_member( token, message, "GET", "" );
}
function http_request_member (memberAccessToken, URL, method, formData, optionalAPIaccessToken) {
Log.Message( "token " + memberAccessToken );
Log.Message(" message in additional info", URL);
Log.Message(" formData in additional info", formData);
var XmlHttpRequest;
XmlHttpRequest = null;
XmlHttpRequest = new ActiveXObject("MSXML2.XMLHTTP.3.0");
if ( ( method == undefined) || (method == "") ) {
method = "GET";
}
var curl;
if ( method == "GET") {
curl = "curl --insecure -H \"Content-type: application/json\" -H \"memberAccessToken:"+memberAccessToken+"\" -X " + method + " " + formData + " " + URL;
}
else {
curl = "curl --insecure -H \"Content-type: application/json\" -H \"memberAccessToken:"+memberAccessToken+"\" -X " + method + " -d " + formData + " " + URL;
}
Log.Message(" curl in additional info=", curl+"=");
// XmlHttpRequest.open( Method, URL, Asynchronous, UserName, Password)
// method e.g. GET, POST, HEAD, PUT, DELETE, OPTIONS...
// Asynchronous = true, do not wait on a server response, false, pause current execution utnil the request is complete
XmlHttpRequest.open(method, URL, false);
// Name, Value
XmlHttpRequest.setRequestHeader("Content-Type", "application/json");
XmlHttpRequest.setRequestHeader("memberAccessToken", memberAccessToken);
if ( (optionalAPIaccessToken != undefined) && ( optionalAPIaccessToken != EMPTY) ) {
Log.Message("header access_token " + optionalAPIaccessToken + " added to request");
XmlHttpRequest.setRequestHeader("access_token", optionalAPIaccessToken);
}
XmlHttpRequest.send(formData);
try {
Log.Message("http_request: reply in additional info", XmlHttpRequest.responseText);
return XmlHttpRequest.responseText;
}
catch (e) {
return "Error" + e ;
}
}
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hey Chicks,
I am extremely thankful for this. Let me investigate on this. Will update my findings after implementing your work.
Regards,
Obaid Shirwani
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Obaid,
SoapUI (http://smartbear.com/product/ready-api/soapui-ng/overview/ or http://www.soapui.org/ depending on your needs) fits better for REST API testing. SoapUI is integrated with TestComplete which means that you can run SoapUI tests from within TestComplete and get consolidated log.
Or, as Chicks already mentioned, you can use coded approach and keep everything within TestComplete.
/Alex [Community Champion]
____
[Community Champions] are not employed by SmartBear Software but
are just volunteers who have some experience with the tools by SmartBear Software
and a desire to help others. Posts made by [Community Champions]
may differ from the official policies of SmartBear Software and should be treated
as the own private opinion of their authors and under no circumstances as an
official answer from SmartBear Software.
The [Community Champion] signature is assigned on quarterly basis and is used with permission by SmartBear Software.
https://community.smartbear.com/t5/Community-Champions/About-the-Community-Champions-Program/gpm-p/252662
================================
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Just to back up, you can use - ActiveXObject("MSXML2.XMLHTTP.3.0") - with RESTful API's.
I have a full set of script extensions now built to allow my tests to write their results to TFS using it's new RESTful API.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have been able to achieve this using pHp and C# but still no luck with TestComplete / JS.
This is how my PHP code looks like:
<?php
$_url = "http://x.y.z.a/xyzqa/index.php/api/BringUsers";
$ch = curl_init($_url);
curl_setopt_array($ch, array(CURLOPT_HTTPHEADER => array('X-REST-USERNAME: admin', 'X-REST-PASSWORD: admin')));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//echo "Calling 'curl_exec':";
$_response = curl_exec($ch);
echo "<br>Closing CURL<br>";
curl_close($ch);
echo "<br><b>Decoding JSON:</b><br>";
$_jsonDecoded = json_decode($_response, true);
print_r($_jsonDecoded);
echo "</br>";
This is how my C# code looks like:
//01. Begin: myApp REST API Method 01
static void myAppRESTAPIMethod01()
{
string responseString = "";
string url = @"http://x.y.z.a/xyzqa/index.php/api/BringUsers";
using (WebClient client = new WebClient())
{
client.Headers.Add("X_REST_USERNAME", "admin");
client.Headers.Add("X_REST_PASSWORD", "admin");
//send web request; get web response as XML
try
{
responseString = client.DownloadString(url).ToString();
Console.WriteLine(responseString);
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex.Message);
}
}
}
//01. End: myAppREST API Method 01
I am unable to figure out how to fit this in TestComplete/JS
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
> could you please explain your variables ?
Which ones? In what code (snippet)?
/Alex [Community Champion]
____
[Community Champions] are not employed by SmartBear Software but
are just volunteers who have some experience with the tools by SmartBear Software
and a desire to help others. Posts made by [Community Champions]
may differ from the official policies of SmartBear Software and should be treated
as the own private opinion of their authors and under no circumstances as an
official answer from SmartBear Software.
The [Community Champion] signature is assigned on quarterly basis and is used with permission by SmartBear Software.
https://community.smartbear.com/t5/Community-Champions/About-the-Community-Champions-Program/gpm-p/252662
================================
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry for being late on this one 🙂 I meant the following:
memberAccessToken, URL, method, formData, optionalAPIaccessToken
