<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[MaxSoft — IntelliAPI - Medium]]></title>
        <description><![CDATA[Simple, codeless and efficient framework for API test automation. - Medium]]></description>
        <link>https://medium.com/intelliapi?source=rss----97df6ee31bc4---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>MaxSoft — IntelliAPI - Medium</title>
            <link>https://medium.com/intelliapi?source=rss----97df6ee31bc4---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 31 May 2026 00:13:56 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/intelliapi" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[MaxSoft IntelliAPI Documentation]]></title>
            <link>https://medium.com/intelliapi/maxsoft-intelliapi-step-implementations-usages-5cb9150e0106?source=rss----97df6ee31bc4---4</link>
            <guid isPermaLink="false">https://medium.com/p/5cb9150e0106</guid>
            <category><![CDATA[api]]></category>
            <category><![CDATA[maxsoft]]></category>
            <category><![CDATA[gauge]]></category>
            <category><![CDATA[intelliapi]]></category>
            <category><![CDATA[automation]]></category>
            <dc:creator><![CDATA[Osanda Deshan Nimalarathna]]></dc:creator>
            <pubDate>Mon, 07 Jan 2019 16:00:03 GMT</pubDate>
            <atom:updated>2021-07-29T15:31:40.531Z</atom:updated>
            <content:encoded><![CDATA[<h4>First-ever codeless and lightweight cross-platform API test automation tool</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g81bIYqG3jMg-u3mRVsXzg.jpeg" /><figcaption>MaxSoft IntelliAPI</figcaption></figure><h3>What is IntelliAPI?</h3><p>IntelliAPI is the first-ever code-free API automation framework which supports behavior driven testing approach with the business language syntax.</p><p>The main reason for developing this framework is to provide an easy way for Technical QA/Developer/Non-technical QA to perform API testing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/853/1*dtMR2dam7B1tvwAeMiO9wA.png" /></figure><h3>Advantages</h3><ol><li>Ability to implement automated tests for an API within few minutes.</li><li>Codeless API automation.</li><li>Ability to validate backend databases.</li><li>Tests can be designed even by a non- technical person.</li><li>Human readable tests in business language and markdown syntax.</li><li>Generation of an executable document.</li><li>Generate a HTML report with test details for every test execution.</li><li>Parallel execution.</li><li>Live execution report.</li><li>Automated emails for test execution summary with graphical representations.</li></ol><h3><strong>Technologies/Frameworks Used</strong></h3><ol><li>Java</li><li>Gauge Framework</li><li>Rest Assured</li><li>Apache POI</li><li>Junit</li><li>Apache Maven</li></ol><h3><strong>Supported Platforms</strong></h3><ul><li>Windows</li><li>Linux</li><li>Mac OS</li></ul><h3><strong>Supported Languages</strong></h3><ul><li>Java</li></ul><h3><strong>Design Diagram</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BnR6wxAcmb5Kedaoyy9A2Q.png" /><figcaption>Design diagram</figcaption></figure><h3>Installation</h3><h4>1. Install Pre Requisites</h4><ol><li>Java</li><li>Maven</li></ol><h4>2. Install Gauge Core</h4><p><strong>On Windows</strong></p><ol><li>Install Chocolatey by executing the following command in an administrator command prompt.<br>@&quot;%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe&quot; -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command &quot;[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString(&#39;https://chocolatey.org/install.ps1&#39;))&quot; &amp;&amp; SET &quot;PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin&quot;</li><li>Install Gauge by executing the following command in an administrator command prompt.<br>choco install gauge</li></ol><p><strong>On MacOS</strong></p><ol><li>Update Homebrew.<br>brew update</li><li>Install Gauge using Homebrew.<br>brew install gauge</li></ol><p><strong>On Linux</strong></p><ol><li>First, add Gauge’s GPG key with this command.<br>sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-keys 023EDB0B</li><li>Then add Gauge to the repository list using this command.<br>echo deb https://dl.bintray.com/gauge/gauge-deb nightly main | sudo tee -a /etc/apt/sources.list</li><li>Finally, install Gauge using these commands.<br>sudo apt-get update<br>sudo apt-get install gauge</li></ol><h4>3. Install Gauge Plugins</h4><ol><li>Open administrator command prompt and execute following commands.<br>gauge install java<br>gauge install html-report<br>gauge install json-report<br>gauge install xml-report<br>gauge install spectacle<br>gauge install flash</li><li>You can check the installation using the following command.<br>gauge -v</li><li>If the installation is success, it will output like this:</li></ol><pre>Gauge version: &lt;version number&gt;<br>    Plugins<br>    -------<br>    flash (&lt;version number&gt;)<br>    html-report (&lt;version number&gt;)<br>    java (&lt;version number&gt;)<br>    json-report (&lt;version number&gt;)<br>    spectacle (&lt;version number&gt;)<br>    xml-report (&lt;version number&gt;)</pre><h3>Tested Versions</h3><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fairtable.com%2Fembed%2FshrtSyiC1ceyfrlpA&amp;display_name=Airtable&amp;url=https%3A%2F%2Fairtable.com%2FshrtSyiC1ceyfrlpA&amp;image=https%3A%2F%2Fstatic.airtable.com%2Fimages%2Foembed%2Fairtable.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=airtable" width="800" height="533" frameborder="0" scrolling="no"><a href="https://medium.com/media/614eb8719d1c70752f778a4a3a0a280c/href">https://medium.com/media/614eb8719d1c70752f778a4a3a0a280c/href</a></iframe><h3>Steps and Usages</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fK4mxyt63TUeYbs8fOhl7g.png" /></figure><h4><strong>General steps</strong></h4><blockquote><strong>Step 1: Print test execution environment details</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/400c4ad2f2e63de6d2bd5a69394f7f40/href">https://medium.com/media/400c4ad2f2e63de6d2bd5a69394f7f40/href</a></iframe><p>Here you will get the below details in the <strong>html-report</strong>. This can be used inside a specification where you need to get the <strong>Operating System</strong> name of the test execution machine, <strong>API Environment</strong> and <strong>API Base URL</strong>. It will have a better readability if you can use this step in a separate scenario.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/601/1*Fjm0FfSAr70rmcOgWhxghA.png" /><figcaption>The output in the html-report</figcaption></figure><blockquote><strong>Step 2: Wait until a given timeout is expired</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9a4cca0f2b5fb55a35f08d13deef470f/href">https://medium.com/media/9a4cca0f2b5fb55a35f08d13deef470f/href</a></iframe><p>You can use this step if you need to pause the execution for some amount of time defined in seconds.</p><p>Assume you have invoked some action which will be going through a sequence of actions and while that is happening, the status call will return the response as,</p><pre>{<br>   &quot;status&quot;: &quot;In Progress&quot;<br>}</pre><p>At the end of those actions status call will return the response as,</p><pre>{<br>   &quot;status&quot;: &quot;Completed&quot;<br>}</pre><p>In this kind of situations you have to wait some time until a process is completed. So here you can use the waiting step in between invoking action and getting the status steps.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e1f71d33ba5a54648f993affe51e94a2/href">https://medium.com/media/e1f71d33ba5a54648f993affe51e94a2/href</a></iframe><h4><strong>API request setting up steps</strong></h4><blockquote><strong>Step 1: Initialize the API</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/456da20acd7c545ad26dc45572a71176/href">https://medium.com/media/456da20acd7c545ad26dc45572a71176/href</a></iframe><p>You need to use this step as the first step in any API automation scenario. This step will help IntelliAPI to identify the <strong>API Endpoint</strong>,<strong> </strong><strong>HTTP Method</strong>,<strong> </strong><strong>Request Type (JSON/FORM-DATA</strong> and <strong>Request Body</strong> which are located in the <strong>api_doc.xlsx</strong> file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fv9wFYuxmnY4gWwtvLrMHw.png" /><figcaption>API document excel file (api_doc.xlsx)</figcaption></figure><p>You need to use the <strong>API_NAME</strong> in the <strong>api_doc.xlsx</strong> file as the <strong><em>api_name </em></strong>in this step.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/fd6c88b006586861eda01f134178a97c/href">https://medium.com/media/fd6c88b006586861eda01f134178a97c/href</a></iframe><blockquote><strong>Step 2: Initialize a GET API using an URL in the response body</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9053a7a1fd44f07a56652834bba86e2a/href">https://medium.com/media/9053a7a1fd44f07a56652834bba86e2a/href</a></iframe><p>Assume you need to invoke a <strong>GET</strong> API from an URL which is in the response body. In such case, you can use this step.</p><p><strong>Note:</strong> You must use <strong>Step 30</strong>, to invoke this GET request. This step 3 is the prerequisite for that.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/fb399c996c6434dfb7c00d1aad050fb2/href">https://medium.com/media/fb399c996c6434dfb7c00d1aad050fb2/href</a></iframe><blockquote><strong>Step 3: Save values to data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2c103f1e9f25d9c7cb04f790ba1983a1/href">https://medium.com/media/2c103f1e9f25d9c7cb04f790ba1983a1/href</a></iframe><p>There might be the situations where you need to dynamically save some values to use them in another tests. To fulfil that requirement, the <strong>data stores </strong>were implemented.</p><p>There are <strong>3 types</strong> of <strong>data stores</strong>.</p><ol><li><strong>Scenario </strong>— Valid until the end of the scenario</li><li><strong>Spec/Specification </strong>— Valid until the end of the specification</li><li><strong>Suite </strong>— Valid until the end of the test suite</li></ol><p>Assume, you are testing a <strong>POST</strong> request. So first you will invoke the API. Then in the response, you will see the mongo ID for that object. Now you need to make sure that, it can be retrieved from a <strong>GET </strong>request. For that you have to send the Object ID as a path parameter of the <strong>GET</strong> request. Here you will need to save that Object ID after you invoke the <strong>POST </strong>request. Then only you can send that as a path parameter in the <strong>GET</strong> request.</p><p>By using this step, you can save the given values inside the data stores.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5ba58a301ef237740d9c5a01916fe1fe/href">https://medium.com/media/5ba58a301ef237740d9c5a01916fe1fe/href</a></iframe><blockquote><strong>Step 4: Save the environmental property values into data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f6968aa6b661ba25624b9290c060796e/href">https://medium.com/media/f6968aa6b661ba25624b9290c060796e/href</a></iframe><p>From this step, you can save any property value in the property files located in <strong>env </strong>folder. These values are saved inside the <strong>data stores</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/987b9a8b2c58f83ebcee478dc2aaf725/href">https://medium.com/media/987b9a8b2c58f83ebcee478dc2aaf725/href</a></iframe><blockquote><strong>Step 5: Save test data from API document excel file to data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f789cbbf2bb3818574fb84d33954c614/href">https://medium.com/media/f789cbbf2bb3818574fb84d33954c614/href</a></iframe><p>By using this step, you can save the test data<strong> </strong>to <strong>data stores</strong> from the <strong>api_doc.xlsx</strong>file. So that, you can use these values in other tests.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d65d6f2cb2acdde5e19bba7ddc8358cc/href">https://medium.com/media/d65d6f2cb2acdde5e19bba7ddc8358cc/href</a></iframe><blockquote><strong>Step 6: Save values inside data stores as a comma-separated list</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4b3882606e018720f4fb9b56064e642d/href">https://medium.com/media/4b3882606e018720f4fb9b56064e642d/href</a></iframe><p>By using this step, you can have <strong>a comma-separated list</strong> using the <strong>data store values</strong>. This comma-separated list also saved as a <strong>data store</strong>. So that, you can control its validity.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/96d2066517d0a27791e0c7a654c5bca7/href">https://medium.com/media/96d2066517d0a27791e0c7a654c5bca7/href</a></iframe><p>Assuming the data store values as follows,</p><p><strong>osanda </strong>is the value saved under a <strong>scenario </strong>type data store named <strong>variable1</strong>.<strong><br></strong><strong>deshan </strong>is the value saved under a <strong>spec</strong> type data store named <strong>variable2</strong>.<strong><br></strong><strong>nimalarathna </strong>is the value saved under a <strong>scenario </strong>type data store named <strong>variable3</strong>.</p><p>Here the <strong>scenario </strong>type data store named<strong> </strong><strong>var1 </strong>will contain the below comma-separated list.</p><pre><strong>osanda, deshan, nimalarathna </strong></pre><blockquote><strong>Step 7: Save the current epoch time into data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d5259a14b2e53e41b8f6f2a01ed26fc4/href">https://medium.com/media/d5259a14b2e53e41b8f6f2a01ed26fc4/href</a></iframe><p>By using this step, you can save the current epoch time<strong> </strong>in<strong> seconds </strong>or<strong> milliseconds, </strong>inside <strong>data stores</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/40b6ab382c639b809da9197fa0f8d478/href">https://medium.com/media/40b6ab382c639b809da9197fa0f8d478/href</a></iframe><blockquote><strong>Step 8: Convert a given format timestamp into epoch time and save it into data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/130ed3835a984a89e0162661f39f31c9/href">https://medium.com/media/130ed3835a984a89e0162661f39f31c9/href</a></iframe><p>From this step, you can convert a timestamp into epoch time format and save it in <strong>data stores</strong>.</p><p><strong>Note:</strong> You can save epoch time in seconds or milliseconds by changing the <strong>&lt;secondsOrMillis&gt; </strong>parameter.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/de024c7d93433955e4f101dc417f5f3a/href">https://medium.com/media/de024c7d93433955e4f101dc417f5f3a/href</a></iframe><blockquote><strong>Step 9: Generate random emails and save it into data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2978aff740da43c61aea3d883f0db66c/href">https://medium.com/media/2978aff740da43c61aea3d883f0db66c/href</a></iframe><p>From this step, you can generate a random email and save it in a <strong>data store</strong>.</p><p><strong>Note:</strong> For <strong>&lt;domainName&gt;</strong>, you can use any email domains such as gmail, yahoo, mailinator, yopmail…. etc.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2376c79478c83271c36ff027c3e26a5a/href">https://medium.com/media/2376c79478c83271c36ff027c3e26a5a/href</a></iframe><blockquote><strong>Step 10: Generate random data and save it into data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/893cd5250c222e166684ec95d6f61449/href">https://medium.com/media/893cd5250c222e166684ec95d6f61449/href</a></iframe><p>From this step, you can generate random data such as first name, last name, full name and address then save it in <strong>data stores</strong>.</p><p><strong>Note:</strong> For <strong>&lt;expectedDataType&gt;</strong>, you can use below data types,</p><ul><li>FirstName</li><li>LastName</li><li>FullName</li><li>Address</li></ul><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6de79a9b917d18f28ea5e2125f375822/href">https://medium.com/media/6de79a9b917d18f28ea5e2125f375822/href</a></iframe><blockquote><strong>Step 11: Set values to the API endpoint placeholders</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5453bfb840523e33dbb1cb16439b2ea5/href">https://medium.com/media/5453bfb840523e33dbb1cb16439b2ea5/href</a></iframe><p>Assume you have an API endpoint like below.<br>https://www.googleapis.com/androidpublisher/v3/applications/com.maxsoft.intelliapi.demo/purchases/products/<strong>#skuId</strong>/tokens/<strong>#purchaseToken</strong>?access_token=<strong>#accessToken</strong></p><p>Now you will need to replace <strong>#skuId</strong>, <strong>#purchaseToken</strong> and <strong>#accessToken</strong> placeholders with real values. For that, you can use this step. This will return the URL with the replacement values given above.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d7c785d03a941f55f0958dd8f21bc620/href">https://medium.com/media/d7c785d03a941f55f0958dd8f21bc620/href</a></iframe><p>This will return the following URL with the replacement values given above.<br>https://www.googleapis.com/androidpublisher/v3/applications/com.maxsoft.intelliapi.demo/purchases/products/<strong>com.maxsoft.intelliapi.elementary</strong>/tokens/<strong>1qwedfdsf3DCBHadw2s78JF</strong>?access_token=<strong>eyBDS224dfHfjshffignf&amp;76DHB</strong></p><blockquote><strong>Step 12: Set values to the API endpoint placeholders using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9569a4146fdca6b910d5b0410a6e62a2/href">https://medium.com/media/9569a4146fdca6b910d5b0410a6e62a2/href</a></iframe><p>You can also replace the API endpoint placeholders, by using the <strong>data store values</strong>, as the placeholder values. For that, this step can be used.</p><p>Assume you have an API endpoint like below.<br>https://www.googleapis.com/androidpublisher/v3/applications/com.maxsoft.intelliapi.demo/purchases/products/<strong>#skuId</strong>/tokens/<strong>#purchaseToken</strong>?access_token=<strong>#accessToken</strong></p><p>Now you will need to replace <strong>#skuId</strong>, <strong>#purchaseToken</strong> and <strong>#accessToken</strong> placeholders with the data store values. For that, you can use this step. This will return the URL with the replacement values stored in the data stores given above.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/264f9e70169280ee242601e82ad544ee/href">https://medium.com/media/264f9e70169280ee242601e82ad544ee/href</a></iframe><p>This will return the following URL with the replacement values stored in the data stores given above.<br>https://www.googleapis.com/androidpublisher/v3/applications/com.maxsoft.intelliapi.demo/purchases/products/<strong>com.maxsoft.intelliapi.elementary</strong>/tokens/<strong>1qwedfdsf3DCBHadw2s78JF</strong>?access_token=<strong>eyBDS224dfHfjshffignf&amp;76DHB</strong></p><p><strong>1qwedfdsf3DCBHadw2s78JF </strong>is the value saved under a <strong>scenario</strong> type data store named <strong>purchaseToken</strong>.<strong><br></strong><strong>eyBDS224dfHfjshffignf&amp;76DHB </strong>is the value saved under a <strong>scenario</strong> type data store named <strong>accessToken</strong>.</p><blockquote><strong>Step 13: Set current timestamp into a row in a CSV file</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/10cb865f587c5ec289871bad399ef26a/href">https://medium.com/media/10cb865f587c5ec289871bad399ef26a/href</a></iframe><p>You might need the current timestamps for your tests. For that, you can use this step. This will save the current timestamps in all the rows in a given column of a given CSV file.</p><p>You need to provide the <strong>column name</strong> of the CSV file where you need to have current timestamps in all the rows, <strong>CSV file path</strong> and the <strong>timestamp pattern.</strong></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fairtable.com%2Fembed%2Fshr0t1DItyMSDdJm8&amp;display_name=Airtable&amp;url=https%3A%2F%2Fairtable.com%2Fshr0t1DItyMSDdJm8&amp;image=https%3A%2F%2Fstatic.airtable.com%2Fimages%2Foembed%2Fairtable.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=airtable" width="800" height="533" frameborder="0" scrolling="no"><a href="https://medium.com/media/94b1ce1f381b1ed833800f6b2536bdd5/href">https://medium.com/media/94b1ce1f381b1ed833800f6b2536bdd5/href</a></iframe><p><strong>Note:</strong> IntelliAPI will first read the row and replace the row value with the current timestamp. This operation will be recursively happen until the end of the rows. So the row values of that column might be identical with the timestamps. You can use this step whenever you need some identical values.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f4801ac151113f62024c88eb24fab63d/href">https://medium.com/media/f4801ac151113f62024c88eb24fab63d/href</a></iframe><p>This will replace the row values in <strong>timestamp </strong>column of the CSV file with the current timestamps.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-K_NDcLGKUvGK_hQxfwC2g.png" /><figcaption>The output result in the CSV file</figcaption></figure><blockquote><strong>Step 14: Set the request headers</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/49b690dfc0379f920eb4fe9b75bf09e2/href">https://medium.com/media/49b690dfc0379f920eb4fe9b75bf09e2/href</a></iframe><p>In web services, you might need to use headers with the APIs. In such cases you should use this step to embed the required headers with the API payload.</p><p><strong>Note:</strong> Authorization is also usually provided as a header of the API. But in IntelliAPI, it is configured by the framework to take that as a header. So you don’t need to worry about the authorization header in this step.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c20d9acdae59986dbe81f2584830b273/href">https://medium.com/media/c20d9acdae59986dbe81f2584830b273/href</a></iframe><blockquote><strong>Step 15: Set the request headers using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3fb0a2214956f85f758ae0ad952b981e/href">https://medium.com/media/3fb0a2214956f85f758ae0ad952b981e/href</a></iframe><p>You can also set the request headers, by using the <strong>data store values</strong>, as the header values. For that, this step can be used.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/40b0bc51096a676331dc744b4a4247f0/href">https://medium.com/media/40b0bc51096a676331dc744b4a4247f0/href</a></iframe><blockquote><strong>Step 16: Set the request attribute values</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2495a780ce192af3ceb659e5fa6ef048/href">https://medium.com/media/2495a780ce192af3ceb659e5fa6ef048/href</a></iframe><p>From the above steps, you have initialized the API endpoint. So now you will need to set the <strong>JSON request body</strong> to invoke the API request. For that, this step can be used.</p><p>In the project folder, navigate to <strong>resources/api_document </strong>folder. Here you have the excel files based on the test execution environments. This files contain the template of the APIs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fv9wFYuxmnY4gWwtvLrMHw.png" /><figcaption>API document excel file (api_doc.xlsx)</figcaption></figure><p>In this step simply what you are doing is, replacing the JSON payload template placeholders with the desired values.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ee3b0549e003660c5e4dba88b8f92844/href">https://medium.com/media/ee3b0549e003660c5e4dba88b8f92844/href</a></iframe><p>This will return the<strong> </strong>JSON request body as follows,</p><pre>{  <br>   <strong>&quot;comment&quot;</strong>:&quot;This is the comment&quot;,<br>   <strong>&quot;username&quot;</strong>:&quot;Osanda&quot;,<br>   <strong>&quot;rating&quot;</strong>:&quot;Awesome&quot;,<br>   <strong>&quot;appId&quot;</strong>:&quot;sfc_mvp&quot;,<br>   <strong>&quot;email&quot;</strong>:&quot;maxsoft-android-demo&quot;,<br>   <strong>&quot;appName&quot;</strong>:&quot;sfc_mvp_ios&quot;<br>}</pre><blockquote><strong>Step 17: Set the request attribute values using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/95b33308f91ebff605bd9816e7119681/href">https://medium.com/media/95b33308f91ebff605bd9816e7119681/href</a></iframe><p>You can also set the <strong>JSON request body</strong> to invoke the API request, by using the <strong>data store values</strong>, as the attribute values. For that, this step can be used.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/354ca266001fd2fcc9962bdb252b624f/href">https://medium.com/media/354ca266001fd2fcc9962bdb252b624f/href</a></iframe><p>Assuming the data store values as follows,</p><p><strong>Osanda </strong>is the value saved under a <strong>scenario</strong> type data store named <strong>creatorId</strong>.<strong><br></strong><strong>API </strong>is the value saved under a <strong>spec</strong> type data store named <strong>creatoredSource</strong>.</p><p>This will return the JSON request body as follows,</p><pre>{  <br>   <strong>&quot;creatorId&quot;</strong>:&quot;Osanda&quot;,<br>   <strong>&quot;creatorPlatform&quot;</strong>:&quot;Web&quot;,<br>   <strong>&quot;creatoredSource&quot;</strong>:&quot;API&quot;<br>}</pre><blockquote><strong>Step 18: Set the request payload using a text file</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/68c66e18ccda5e91022d3620ca5ca0e7/href">https://medium.com/media/68c66e18ccda5e91022d3620ca5ca0e7/href</a></iframe><p>From this step, you can directly set the <strong>JSON request body </strong>by using a text file.</p><p>Ex:-</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/312/1*DjnKTVgOKVdy90XYA6oHCQ.png" /><figcaption>Sample text file for the JSON request body</figcaption></figure><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4011ab958813f75e98c65727f0b30638/href">https://medium.com/media/4011ab958813f75e98c65727f0b30638/href</a></iframe><blockquote><strong>Step 19: Set values to the request payload placeholders</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a9bbc20b6832248311287cc765de0888/href">https://medium.com/media/a9bbc20b6832248311287cc765de0888/href</a></iframe><p>You might need to change the request attribute values after setting the <strong>JSON request body. </strong>Assume you need to pass some ids to the JSON request body after you set it. For that this step can be used.<strong> </strong>This will read the current JSON request body and modify it by replacing the placeholders with the desired values.</p><p>Ex:-</p><p>Before modifying the JSON request body,</p><pre>{  <br>   <strong>&quot;username&quot;</strong>:&quot;#username&quot;,<br>   <strong>&quot;accessingPlatform&quot;</strong>:&quot;Web&quot;,<br>   <strong>&quot;password&quot;</strong>:&quot;#password&quot;<br>}</pre><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/73a60817ad1ee3fda0dc220db91fee22/href">https://medium.com/media/73a60817ad1ee3fda0dc220db91fee22/href</a></iframe><p>After using the above step, it will return the JSON request body as follows,</p><pre>{  <br>   <strong>&quot;username&quot;</strong>:&quot;osanda12&quot;,<br>   <strong>&quot;accessingPlatform&quot;</strong>:&quot;Web&quot;,<br>   <strong>&quot;password&quot;</strong>:&quot;Password1&quot;<br>}</pre><blockquote><strong>Step 20: Set values to the request payload placeholders using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/fe0c54bb3a8c3d60498ba2fda741c3a1/href">https://medium.com/media/fe0c54bb3a8c3d60498ba2fda741c3a1/href</a></iframe><p>You can also modify the <strong>JSON request body</strong>, by using the <strong>data store values</strong>, as the attribute values. For that, this step can be used.</p><p>Ex:-</p><p>Before modifying the JSON request body,</p><pre>{  <br>   <strong>&quot;username&quot;</strong>:&quot;#username&quot;,<br>   <strong>&quot;accessingPlatform&quot;</strong>:&quot;Web&quot;,<br>   <strong>&quot;password&quot;</strong>:&quot;#password&quot;<br>}</pre><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/0f420c04f412e55e00034e172bc59cd2/href">https://medium.com/media/0f420c04f412e55e00034e172bc59cd2/href</a></iframe><p>Assuming the data store values as follows,</p><p><strong>osanda12 </strong>is the value saved under a <strong>spec </strong>type data store named <strong>username</strong>.<strong><br></strong><strong>Password1 </strong>is the value saved under a <strong>spec</strong> type data store named <strong>password</strong>.</p><p>After using the above step, it will return the JSON request body as follows,</p><pre>{  <br>   <strong>&quot;username&quot;</strong>:&quot;osanda12&quot;,<br>   <strong>&quot;accessingPlatform&quot;</strong>:&quot;Web&quot;,<br>   <strong>&quot;password&quot;</strong>:&quot;Password1&quot;<br>}</pre><blockquote><strong>Step 21: Set the form-data request key-value pairs</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1e58fc375c089537a5ad835b95d1554d/href">https://medium.com/media/1e58fc375c089537a5ad835b95d1554d/href</a></iframe><p>In form-data type request, you are passing the <strong>key-value </strong>pairs instead of the JSON body. To set the key-value<strong> </strong>pairs, this step can be used.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5f895d975860dba79b8494ebc21ebe07/href">https://medium.com/media/5f895d975860dba79b8494ebc21ebe07/href</a></iframe><blockquote><strong>Step 22: Set the form-data request key-value pairs using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/89be80174e48c9e44aa3295a72776108/href">https://medium.com/media/89be80174e48c9e44aa3295a72776108/href</a></iframe><p>You can also set the <strong>key-value</strong> pairs, by using the <strong>data store values</strong>, as the values. For that, this step can be used.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d3b9a90d4b92fde65808e35362d0c564/href">https://medium.com/media/d3b9a90d4b92fde65808e35362d0c564/href</a></iframe><blockquote><strong>Step 23: Set the form-data request multipart file upload</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/81ad8f26fe6de54f7b994f14afe4b25c/href">https://medium.com/media/81ad8f26fe6de54f7b994f14afe4b25c/href</a></iframe><p>Assume you need to test a <strong>multipart</strong> <strong>file upload</strong> using a <strong>form-data</strong> request. For that, this step can be used. In here, you need to provide the <strong>key name </strong>for the form-data key and the <strong>file path</strong> with the <strong>mime type</strong> of the multipart file.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/fa615b31af4fc579598327e5315d8d4c/href">https://medium.com/media/fa615b31af4fc579598327e5315d8d4c/href</a></iframe><blockquote><strong>Step 24: Set the query parameters</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/60d16abee133ad327d1a317cfb8f99f4/href">https://medium.com/media/60d16abee133ad327d1a317cfb8f99f4/href</a></iframe><p>If you need to append some query parameters to the API endpoint, you can use this step. This will return the API endpoint as follows,</p><pre><strong>&lt;baseUrl&gt;?&lt;queryName1&gt;=&lt;queryValue1&gt;&amp;&lt;queryName2&gt;=&lt;queryValue2&gt;</strong></pre><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8454754f71dd997f7aaa3aea27956076/href">https://medium.com/media/8454754f71dd997f7aaa3aea27956076/href</a></iframe><p>After using the above step, it will return the API endpoint as follows,</p><pre>http://10.199.253.83:8082/api/questions/count?<strong>deckId</strong>=<strong>5a603af62e02d86561172dac</strong></pre><blockquote><strong>Step 25: Set the query parameters using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7c6ed89b3b3db770010add7ee5ac40a7/href">https://medium.com/media/7c6ed89b3b3db770010add7ee5ac40a7/href</a></iframe><p>You can also set the <strong>query parameters</strong>, by using the <strong>data store values</strong>, as the query values. For that, this step can be used.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/90bed85f2d92699082ec0a3e4870339d/href">https://medium.com/media/90bed85f2d92699082ec0a3e4870339d/href</a></iframe><p>Assuming the data store value as follows,</p><p><strong>5a603af62e02d86561172dac </strong>is the value saved under a <strong>spec </strong>type data store named <strong>myDeckIdWithQuestions</strong>.</p><p>After using the above step, it will return the API endpoint as follows,</p><pre>http://10.199.253.83:8082/api/questions/count?<strong>deckId</strong>=<strong>5a603af62e02d86561172dac</strong></pre><blockquote><strong>Step 26: Set the path parameters</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/682bb88e4b2af85922301fb66d91e9bb/href">https://medium.com/media/682bb88e4b2af85922301fb66d91e9bb/href</a></iframe><p>If you need to append some path parameters to the API endpoint, you can use this step. This will return the API endpoint as follows,</p><pre><strong>&lt;baseUrl&gt;/&lt;pathParamValue1&gt;/&lt;pathParamValue2&gt;</strong></pre><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1cb0be59b965ea653244b6fc83865e48/href">https://medium.com/media/1cb0be59b965ea653244b6fc83865e48/href</a></iframe><p>After using the above step, it will return the API endpoint as follows,</p><pre>http://10.199.253.83:8082/api/deckId/<strong>5a603af62e02d86561172dac</strong></pre><blockquote><strong>Step 27: Set the path parameters using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a54a21cbc9b2be415ed40864bd2631fb/href">https://medium.com/media/a54a21cbc9b2be415ed40864bd2631fb/href</a></iframe><p>You can also set the <strong>path parameters</strong>, by using the <strong>data store values</strong>, as the path parameter values. For that, this step can be used.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/471c4fdcd1455c818d313e063621bafa/href">https://medium.com/media/471c4fdcd1455c818d313e063621bafa/href</a></iframe><p>Assuming the data store value as follows,</p><p><strong>5a603af62e02d86561172dac </strong>is the value saved under a <strong>scenario </strong>type data store named <strong>expertDeckId1</strong>.</p><p>After using the above step, it will return the API endpoint as follows,</p><pre>http://10.199.253.83:8082/api/deckId/<strong>5a603af62e02d86561172dac</strong></pre><blockquote><strong>Step 28: Set request authentication configurations</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/df0861a64147e76a4bf20d96bc95c639/href">https://medium.com/media/df0861a64147e76a4bf20d96bc95c639/href</a></iframe><p>From this step, you can configure the way you want to authorize this API. If no authentication required, you can ignore this step.</p><p>If you need to authenticate the API using a given token, you can follow the below configurations.<br><strong>Is authentication required? Yes</strong><br><strong>Do you need to retrieve the access token from the text file? No</strong><br><strong>Provide the access token if you need to authorize the API manually &lt;Provide your token here&gt;</strong></p><p>If you need to authenticate the API using the previously saved token, you can follow the below configurations. (Globally saving the token is described under Step 40)<br><strong>Is authentication required? Yes</strong><br><strong>Do you need to retrieve the access token from the text file? Yes</strong><br><strong>Provide the access token if you need to authorize the API manually N/A</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/97c71002486abbd37900c2fbf7a4a876/href">https://medium.com/media/97c71002486abbd37900c2fbf7a4a876/href</a></iframe><h4>API request invoking steps</h4><blockquote><strong>Step 1: Invoke API</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href">https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href</a></iframe><p>After you have provide all the test data and finalize the API payload, you can use this step to invoke the API and get the response.</p><blockquote><strong>Step 2: Invoke GET API using the endpoint saved in the data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5c72c5b7b113c7bb6245e4445902aea7/href">https://medium.com/media/5c72c5b7b113c7bb6245e4445902aea7/href</a></iframe><p>Assume you need to invoke a <strong>GET</strong> API from the endpoint which you have already saved in a <strong>data store</strong>. In such case, you can use this step.</p><p><strong>Note:</strong> You can use this step after the <strong>Step 3 (</strong>prerequisite is the step 3<strong>). </strong>Then this will invoke the GET request from the URL saved in step 3.</p><h4>API response validation steps</h4><blockquote><strong>Step 1: Validate the response status code</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a8fc45d94d9f06d2e9449451c0ff90d4/href">https://medium.com/media/a8fc45d94d9f06d2e9449451c0ff90d4/href</a></iframe><p>By using this step, you can validate the <strong>response status code</strong> of the API.</p><p>You should provide the expected response status code<strong> </strong>here. If it is not matched with the actual response code, an assertion error will be thrown.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/fb2accecead0adb5c809d4896d61a54e/href">https://medium.com/media/fb2accecead0adb5c809d4896d61a54e/href</a></iframe><blockquote><strong>Step 2: Validate the response content by JSON path value contains</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e61ef7515e6f7bf22642a72a2d0cf22f/href">https://medium.com/media/e61ef7515e6f7bf22642a72a2d0cf22f/href</a></iframe><p>From this step, you can check whether the response <strong>contains </strong>your <strong>expected values</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/81a5a720d09bab3c08079e3eb6c99230/href">https://medium.com/media/81a5a720d09bab3c08079e3eb6c99230/href</a></iframe><blockquote><strong>Step 3: Validate the response content by JSON path value contains using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e51599853e9703222cc7147beacf091e/href">https://medium.com/media/e51599853e9703222cc7147beacf091e/href</a></iframe><p>From this step, you can check whether the response <strong>contains</strong> your <strong>expected values</strong>, by using the <strong>data store values</strong>, as the expected values.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/63be4316cbe53a88faac9b33be55c895/href">https://medium.com/media/63be4316cbe53a88faac9b33be55c895/href</a></iframe><blockquote><strong>Step 4: Validate the response content by JSON path value not contains</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6817d734e285564ff0e534c8fad91bb3/href">https://medium.com/media/6817d734e285564ff0e534c8fad91bb3/href</a></iframe><p>From this step, you can check whether the response <strong>not contains </strong>your <strong>expected values</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4f31631470c0bc5f01a0720a041063ea/href">https://medium.com/media/4f31631470c0bc5f01a0720a041063ea/href</a></iframe><blockquote><strong>Step 5: Validate the response content by JSON path value not contains using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c92f6b9eeb2737642dc0a98b608231aa/href">https://medium.com/media/c92f6b9eeb2737642dc0a98b608231aa/href</a></iframe><p>From this step, you can check whether the response <strong>not contains</strong> your <strong>expected values</strong>, by using the <strong>data store values</strong>, as the expected values.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3f7ac10955928734dcdc473626b6b1d0/href">https://medium.com/media/3f7ac10955928734dcdc473626b6b1d0/href</a></iframe><blockquote><strong>Step 6: Validate the response content by exact JSON path value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/447c0d1e5faf78f4029c7157a280b9c1/href">https://medium.com/media/447c0d1e5faf78f4029c7157a280b9c1/href</a></iframe><p>From this step, you can check whether the response <strong>exactly equals </strong>to your <strong>expected values</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/923e966da7113a9b6f1594c65ceec5e6/href">https://medium.com/media/923e966da7113a9b6f1594c65ceec5e6/href</a></iframe><blockquote><strong>Step 7: Validate the response content by exact JSON path value using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/958e434d32865cca7115cf2e52a688f0/href">https://medium.com/media/958e434d32865cca7115cf2e52a688f0/href</a></iframe><p>From this step, you can check whether the response <strong>exactly equals </strong>to your <strong>expected values</strong>, by using the <strong>data store values</strong>, as the expected values.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7fec930b02ceb85a34858ca752747365/href">https://medium.com/media/7fec930b02ceb85a34858ca752747365/href</a></iframe><blockquote><strong>Step 8: Validate the response content by JSON path value not equals</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/28dfdbdf2ec28ee3ae9b878522b66da7/href">https://medium.com/media/28dfdbdf2ec28ee3ae9b878522b66da7/href</a></iframe><p>From this step, you can check whether the response <strong>not exactly equals </strong>to your <strong>expected values</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e8dc6ad0457698d72d5f7f3d6ceb2faa/href">https://medium.com/media/e8dc6ad0457698d72d5f7f3d6ceb2faa/href</a></iframe><blockquote><strong>Step 9: Validate the response content by JSON path value not equals using data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/77bfc4105400d800c7ac20f541549e99/href">https://medium.com/media/77bfc4105400d800c7ac20f541549e99/href</a></iframe><p>From this step, you can check whether the response <strong>not exactly equals </strong>to your <strong>expected values</strong>, by using the <strong>data store values</strong>, as the expected values.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7ffedb79adf9630f0662709f2ed88203/href">https://medium.com/media/7ffedb79adf9630f0662709f2ed88203/href</a></iframe><blockquote><strong>Step 10: Validate the response content by JSON path existence</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2cc42e04e3dad7a2f46ea8e080c78b89/href">https://medium.com/media/2cc42e04e3dad7a2f46ea8e080c78b89/href</a></iframe><p>From this step, you can check whether the <strong>existence </strong>of your <strong>expected JSON paths </strong>in the response.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a7b4982c9084d06681137be4d1a3140e/href">https://medium.com/media/a7b4982c9084d06681137be4d1a3140e/href</a></iframe><blockquote><strong>Step 11: Validate the JSON schema of the response</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/53e4d06139d5eb2d4b745e8422f2e05d/href">https://medium.com/media/53e4d06139d5eb2d4b745e8422f2e05d/href</a></iframe><p>From this step, you can check whether the API response is matched with the expected <strong>JSON Schema</strong>.</p><p><strong>Note:</strong> To get the JSON Schema for a response, you can use below tool.</p><p><a href="https://www.liquid-technologies.com/online-json-to-schema-converter">https://www.liquid-technologies.com/online-json-to-schema-converter</a></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/687db9578da211850b2949b14e17d79f/href">https://medium.com/media/687db9578da211850b2949b14e17d79f/href</a></iframe><h4>API response data saving steps</h4><blockquote><strong>Step 1: Save the JSON path values into data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c3fcd3ecd42678794b71c012e8ca6435/href">https://medium.com/media/c3fcd3ecd42678794b71c012e8ca6435/href</a></iframe><p>There might be the situations where you need to dynamically save some values to use them in another tests. To fulfil that requirement, you can use this step. This will save <strong>JSON path values </strong>in <strong>data stores</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/36e4b35e01c3ea686cd87dff22a787be/href">https://medium.com/media/36e4b35e01c3ea686cd87dff22a787be/href</a></iframe><blockquote><strong>Step 2: Save the access token in the response globally</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4d33d87f7e2fd7334ce9e7f27893f1a7/href">https://medium.com/media/4d33d87f7e2fd7334ce9e7f27893f1a7/href</a></iframe><p>From this step, you can save a<strong> JSON path value</strong> as the <strong>access token</strong> which can be used in all the other tests.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7ba40028f46a9c5fa99a84ca1586ec35/href">https://medium.com/media/7ba40028f46a9c5fa99a84ca1586ec35/href</a></iframe><blockquote><strong>Step 3: Save the JSON path values into text files</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3416bb2c13a23ca5dab89610833b42f1/href">https://medium.com/media/3416bb2c13a23ca5dab89610833b42f1/href</a></iframe><p>By using this step, you can save the <strong>JSON path values</strong> into <strong>text files. </strong>Then you can use those values for later tests.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/62d26297b2970a4c228871d922a1e44b/href">https://medium.com/media/62d26297b2970a4c228871d922a1e44b/href</a></iframe><blockquote><strong>Step 4: Save the JSON Array values into CSV files</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/fb6ae8faf4679dbc2700a6c5c4f13ac3/href">https://medium.com/media/fb6ae8faf4679dbc2700a6c5c4f13ac3/href</a></iframe><p>From this step, you can <strong>split </strong>the <strong>JSON array values</strong> in a <strong>JSON path</strong> and save them one by one in the rows of the given CSV file.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/85f416230d9e6d653b0e152c2bd99a4d/href">https://medium.com/media/85f416230d9e6d653b0e152c2bd99a4d/href</a></iframe><h4>Data store comparison steps</h4><blockquote><strong>Step 1: Validate a data store value is equal to the expected value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c5a4918fcace2915c3742e637e27302a/href">https://medium.com/media/c5a4918fcace2915c3742e637e27302a/href</a></iframe><p>By this step, you can validate <strong>data store values </strong>are <strong>equal </strong>to your<strong> expected values.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ea5de583c710debbb96c70c22728eb91/href">https://medium.com/media/ea5de583c710debbb96c70c22728eb91/href</a></iframe><blockquote><strong>Step 2: Validate a data store value is equal to another data store value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ba35a873447d2dfc3a06c5428cbc98df/href">https://medium.com/media/ba35a873447d2dfc3a06c5428cbc98df/href</a></iframe><p>From this step, you can validate that the <strong>two</strong> <strong>data store values </strong>are <strong>equal</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/043a05ebfb929adebf3809f8e4b957a2/href">https://medium.com/media/043a05ebfb929adebf3809f8e4b957a2/href</a></iframe><blockquote><strong>Step 3: Validate a data store value is not equal to the expected value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2448063a501bf17b0f34ca41d1164c86/href">https://medium.com/media/2448063a501bf17b0f34ca41d1164c86/href</a></iframe><p>By this step, you can validate <strong>data store values </strong>are <strong>not equal </strong>to your<strong> expected values.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/82f599681d85f0934144eb72bbfbd729/href">https://medium.com/media/82f599681d85f0934144eb72bbfbd729/href</a></iframe><blockquote><strong>Step 4: Validate a data store value is not equal to another data store value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6d25ca44b396caaee1b8506fcabe9d14/href">https://medium.com/media/6d25ca44b396caaee1b8506fcabe9d14/href</a></iframe><p>From this step, you can validate that the <strong>two</strong> <strong>data store values </strong>are <strong>not</strong> <strong>equal</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2c8fa8ae1544a081ac2a24bc79e6a218/href">https://medium.com/media/2c8fa8ae1544a081ac2a24bc79e6a218/href</a></iframe><blockquote><strong>Step 5: Validate a data store value contains the expected value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7b6f90686274b77a938ec0fb0a3f044a/href">https://medium.com/media/7b6f90686274b77a938ec0fb0a3f044a/href</a></iframe><p>By this step, you can validate <strong>data store values contains </strong>your<strong> expected values.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/71dc83b6229bf4be770042fed0997779/href">https://medium.com/media/71dc83b6229bf4be770042fed0997779/href</a></iframe><blockquote><strong>Step 6: Validate a data store value contains another data store value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8af1820764724f963e925fa9f36876c6/href">https://medium.com/media/8af1820764724f963e925fa9f36876c6/href</a></iframe><p>From this step, you can validate that a <strong>data store value contains </strong>another <strong>data store value.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f5fe92354888d4a7255451818d9ec0d8/href">https://medium.com/media/f5fe92354888d4a7255451818d9ec0d8/href</a></iframe><blockquote><strong>Step 7: Validate a data store value not contains the expected value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/43d961d564fd902492679de2128c5d15/href">https://medium.com/media/43d961d564fd902492679de2128c5d15/href</a></iframe><p>By this step, you can validate <strong>data store values not contains </strong>your<strong> expected values.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/26d3b46f2554e141457dda3f1d203363/href">https://medium.com/media/26d3b46f2554e141457dda3f1d203363/href</a></iframe><blockquote><strong>Step 8: Validate a data store value not contains another data store value</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f3c62ab58e5581fbae4b8866d139df63/href">https://medium.com/media/f3c62ab58e5581fbae4b8866d139df63/href</a></iframe><p>From this step, you can validate that a <strong>data store value not contains </strong>another <strong>data store value.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9d95ddd1c9797556668065628360423b/href">https://medium.com/media/9d95ddd1c9797556668065628360423b/href</a></iframe><h4>Data store arithmetic operation steps</h4><blockquote><strong>Step 1: Add integer values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/550294ddeaf64ceba5dfdc29c157e7a8/href">https://medium.com/media/550294ddeaf64ceba5dfdc29c157e7a8/href</a></iframe><p>By this step, you can <strong>add</strong> <strong>the</strong> <strong>integer values</strong> saved in <strong>data stores</strong> and <strong>save the total in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/0c4c1e27c00d1d81b6771725c12751d5/href">https://medium.com/media/0c4c1e27c00d1d81b6771725c12751d5/href</a></iframe><blockquote><strong>Step 2: Subtract integer values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/024978478cc8453ba6c2ceba9b58c873/href">https://medium.com/media/024978478cc8453ba6c2ceba9b58c873/href</a></iframe><p>By this step, you can <strong>subtract</strong> <strong>the</strong> <strong>integer values</strong> saved in <strong>data stores</strong> and <strong>save the final value in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c91b74eef18a8aa42b2d1eee9543ab85/href">https://medium.com/media/c91b74eef18a8aa42b2d1eee9543ab85/href</a></iframe><blockquote><strong>Step 3: Divide integer values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1f031e522439672516b1a79d1070e184/href">https://medium.com/media/1f031e522439672516b1a79d1070e184/href</a></iframe><p>By this step, you can <strong>divide</strong> <strong>the</strong> <strong>integer values</strong> saved in <strong>data stores</strong> and <strong>save the final value in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e62db730eacc5fa298ed194d137e8cc9/href">https://medium.com/media/e62db730eacc5fa298ed194d137e8cc9/href</a></iframe><blockquote><strong>Step 4: Multiply integer values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d0b0ca7f6f124c07bbb3c613b779ca6f/href">https://medium.com/media/d0b0ca7f6f124c07bbb3c613b779ca6f/href</a></iframe><p>By this step, you can <strong>multiply</strong> <strong>the</strong> <strong>integer values</strong> saved in <strong>data stores</strong> and <strong>save the final value in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a64ea94f06e7f26ab4149417ab185244/href">https://medium.com/media/a64ea94f06e7f26ab4149417ab185244/href</a></iframe><blockquote><strong>Step 5: Add decimal values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b4e1e99d49c0916656411458dd9e54fa/href">https://medium.com/media/b4e1e99d49c0916656411458dd9e54fa/href</a></iframe><p>By this step, you can <strong>add</strong> <strong>the</strong> <strong>decimal values</strong> saved in <strong>data stores</strong> and <strong>save the total in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a7f42fe203aa1695fb969031e72e1a2a/href">https://medium.com/media/a7f42fe203aa1695fb969031e72e1a2a/href</a></iframe><blockquote><strong>Step 6: Subtract decimal values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e3103bb105ed343bcd0bf518745778d4/href">https://medium.com/media/e3103bb105ed343bcd0bf518745778d4/href</a></iframe><p>By this step, you can <strong>subtract</strong> <strong>the</strong> <strong>decimal values</strong> saved in <strong>data stores</strong> and <strong>save the final value in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4c34f9ebbcfa5bf7c73e772856d21590/href">https://medium.com/media/4c34f9ebbcfa5bf7c73e772856d21590/href</a></iframe><blockquote><strong>Step 7: Divide decimal values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6775e8e636f159de17ef2ec1f0ec2d68/href">https://medium.com/media/6775e8e636f159de17ef2ec1f0ec2d68/href</a></iframe><p>By this step, you can <strong>divide</strong> <strong>the</strong> <strong>decimal values</strong> saved in <strong>data stores</strong> and <strong>save the final value in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3de2675724b10158f99fa427eb88d3ab/href">https://medium.com/media/3de2675724b10158f99fa427eb88d3ab/href</a></iframe><blockquote><strong>Step 8: Multiply decimal values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ae94c0c5b5844d62dc1d28eefeb799d2/href">https://medium.com/media/ae94c0c5b5844d62dc1d28eefeb799d2/href</a></iframe><p>By this step, you can <strong>multiply</strong> <strong>the</strong> <strong>decimal values</strong> saved in <strong>data stores</strong> and <strong>save the final value in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b3d48a5cd14a84ba34a4a6b7c6edb07c/href">https://medium.com/media/b3d48a5cd14a84ba34a4a6b7c6edb07c/href</a></iframe><h4>Other data store processing steps</h4><blockquote><strong>Step 1: Concatenate values in data stores and save it in a new data store</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c2a6e173e37f26529b2997503677533c/href">https://medium.com/media/c2a6e173e37f26529b2997503677533c/href</a></iframe><p>By this step, you can <strong>concatenate values</strong> saved in <strong>data stores</strong> and <strong>save the final value in a new data store.</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ce2fee404b73ff4024de444a91a1a670/href">https://medium.com/media/ce2fee404b73ff4024de444a91a1a670/href</a></iframe><p><strong>Note:</strong> Here, you might need to have a space between the values in two data stores. For that, you can use the data store variable name as <strong>${SPACE}</strong></p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3d5639d23ec34b6a454b2aa9565204e8/href">https://medium.com/media/3d5639d23ec34b6a454b2aa9565204e8/href</a></iframe><blockquote><strong>Step 2: Read values in data stores</strong></blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a0135cba72a3a14b982d17b5344f96e5/href">https://medium.com/media/a0135cba72a3a14b982d17b5344f96e5/href</a></iframe><p>From this step, you can print the <strong>data store values</strong>.</p><p>Ex:-</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8a61e77a05db847adc2ed907f4550621/href">https://medium.com/media/8a61e77a05db847adc2ed907f4550621/href</a></iframe><p>Here you will get the below details in the <strong>html-report</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/841/1*pYDr-k2KxkGSM3kGzI5qyQ.png" /><figcaption>The output in the html-report</figcaption></figure><h4><strong>Happy Automation !!!</strong></h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5cb9150e0106" width="1" height="1" alt=""><hr><p><a href="https://medium.com/intelliapi/maxsoft-intelliapi-step-implementations-usages-5cb9150e0106">MaxSoft IntelliAPI Documentation</a> was originally published in <a href="https://medium.com/intelliapi">MaxSoft — IntelliAPI</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MaxSoft IntelliAPI — API Test Automation Tutorial 5]]></title>
            <link>https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-5-3b2c22328233?source=rss----97df6ee31bc4---4</link>
            <guid isPermaLink="false">https://medium.com/p/3b2c22328233</guid>
            <category><![CDATA[intelliapi]]></category>
            <category><![CDATA[delete]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[intelliapi-tutorials]]></category>
            <category><![CDATA[maxsoft]]></category>
            <dc:creator><![CDATA[Osanda Deshan Nimalarathna]]></dc:creator>
            <pubDate>Mon, 07 Jan 2019 15:51:28 GMT</pubDate>
            <atom:updated>2021-05-16T16:40:20.645Z</atom:updated>
            <content:encoded><![CDATA[<h4>DELETE API Automation</h4><ol><li>Get a clone of IntelliAPI demo project from <a href="https://github.com/osandadeshan/MaxSoft-IntelliAPI-Demo/tree/v1.1.0">here</a>.</li><li>As an example we’ll automate a test to <strong>delete a category.</strong></li><li>Open <strong>“api_doc.xlsx”</strong> file inside <strong><em>resources/api_document.</em></strong></li><li>Provide relevant details for <strong>“API_NAME”, “API_ENDPOINT”, “HTTP_METHOD”, “BODY_TYPE”</strong> and <strong>“JSON_PAYLOAD_TEMPLATE” </strong>columns as follows,</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3SHYK3qjqwUk1kUmg2AMsg.png" /><figcaption>Adding the entry in API document excel file</figcaption></figure><p>5. Save the excel file.</p><p>6. Create a new specification in specs folder using any name.</p><p>7. Now you can see the below text file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/776/1*eZ5ix1sLvB6iD0HD_e0SFQ.png" /><figcaption>Creating a spec file</figcaption></figure><p>8. You can give any name for Specification heading and Scenario heading.</p><p>9. In the first step, you must define the API name which you need to invoke. That API name should be included in the <strong>“api_doc.xlsx”</strong> file.</p><p>10. For this example I am going to use <strong>“Delete A Category in Deck Service”</strong> as the API name since I have provided those details in the excel file in step 4.</p><p>11. Now you can write the first step as,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6e9623164be8920325eb587919600646/href">https://medium.com/media/6e9623164be8920325eb587919600646/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/716/1*Anyj90KjihQ6MoPs7AHa6A.png" /><figcaption>Preparing to invoke DELETE API</figcaption></figure><p>12. As the second step, you need to configure the authentication token. Since this API request needs the token, we can provide configuration values as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href">https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/853/1*SDFEHJGPkRM61joyEbb30A.png" /><figcaption>Setting authentication configurations</figcaption></figure><p>13. In the third step, you must specify the existing category which you need to delete. Usually delete will be performed using a path parameter as the ID.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/62d7c3f31bf176ddd0b43ce65e3eed48/href">https://medium.com/media/62d7c3f31bf176ddd0b43ce65e3eed48/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/855/1*pJRigWh9XXEvvM2lbBKERQ.png" /><figcaption>Setting the path parameter</figcaption></figure><p>14. As the fourth step, I can invoke the API as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href">https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/1*Zp4uKjAtH4nMdkea5yp-1g.png" /><figcaption>Invoking the API</figcaption></figure><p>15. Now I have invoked the API and I have the response as well. So I can validate the response using the following steps.</p><p>16. So in the fifth step, we’ll validate the status code of the response,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/be61ea9d3c6bf8ae44a9d91d61691d7c/href">https://medium.com/media/be61ea9d3c6bf8ae44a9d91d61691d7c/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/858/1*Y1tzUEnuUThsBiJOTDoOqw.png" /><figcaption>Validating the response status code</figcaption></figure><p>17. Then we’ll validate the response contents using JSON Path Assertions as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8228c6846ea4d89e584563196254e3b6/href">https://medium.com/media/8228c6846ea4d89e584563196254e3b6/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/854/1*BmYrCVsaQffe7J9JWXFrsg.png" /><figcaption>Validating the response content using JSON path</figcaption></figure><p>18. Now you have already completed the designing phase. You can execute this test scenario by clicking the green color play button on the left corner of the scenario heading.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/854/1*4tc6lsOmbceJJyrPqWRADw.png" /><figcaption>Executing the test scenario</figcaption></figure><p>19. After you run the test, go to <strong><em>reports/html-report</em></strong> and open <strong>“index.html”</strong></p><p><strong>That’s how this framework works. I will guide you to perform some other API test automation in coming tutorials.</strong></p><p><strong>Keep in touch……….</strong></p><p><strong>Happy Automation !!!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3b2c22328233" width="1" height="1" alt=""><hr><p><a href="https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-5-3b2c22328233">MaxSoft IntelliAPI — API Test Automation Tutorial 5</a> was originally published in <a href="https://medium.com/intelliapi">MaxSoft — IntelliAPI</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MaxSoft IntelliAPI — API Test Automation Tutorial 4]]></title>
            <link>https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-4-5fb265ca5eaf?source=rss----97df6ee31bc4---4</link>
            <guid isPermaLink="false">https://medium.com/p/5fb265ca5eaf</guid>
            <category><![CDATA[maxsoft]]></category>
            <category><![CDATA[put]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[intelliapi-tutorials]]></category>
            <category><![CDATA[intelliapi]]></category>
            <dc:creator><![CDATA[Osanda Deshan Nimalarathna]]></dc:creator>
            <pubDate>Mon, 07 Jan 2019 15:51:17 GMT</pubDate>
            <atom:updated>2021-05-16T16:41:56.134Z</atom:updated>
            <content:encoded><![CDATA[<h4>PUT API Automation</h4><ol><li>Get a clone of IntelliAPI demo project from <a href="https://github.com/osandadeshan/MaxSoft-IntelliAPI-Demo/tree/v1.1.0">here</a>.</li><li>As an example we’ll automate a test to <strong>edit a category.</strong></li><li>Open <strong>“api_doc.xlsx”</strong> file inside <strong><em>resources/api_document.</em></strong></li><li>Provide relevant details for <strong>“API_NAME”, “API_ENDPOINT”, “HTTP_METHOD”, “BODY_TYPE”</strong> and <strong>“JSON_PAYLOAD_TEMPLATE” </strong>columns as follows,</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DqW_NELpoVsE9dOLKuKVUg.png" /><figcaption>Adding the entry in API document excel file</figcaption></figure><p>5. Save the excel file.</p><p>6. Create a new specification in specs folder using any name.</p><p>7. Now you can see the below text file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/776/1*2zQNvzbIiT8oyhZdCwozkw.png" /><figcaption>Creating a spec file</figcaption></figure><p>8. You can give any name for Specification heading and Scenario heading.</p><p>9. In the first step, you must define the API name which you need to invoke. That API name should be included in the <strong>“api_doc.xlsx”</strong> file.</p><p>10. For this example I am going to use <strong>“Edit A Category in Deck Service”</strong>as the API name since I have provided those details in the excel file in step 4.</p><p>11. Now you can write the first step as,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6ab321a2c5501a543c24b3652ef4b9f0/href">https://medium.com/media/6ab321a2c5501a543c24b3652ef4b9f0/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/767/1*0HKzLOZ2LJwgNLj0VXWDXg.png" /><figcaption>Preparing to invoke PUT API</figcaption></figure><p>12. As the second step, you need to configure the authentication token. Since this API request needs the token, we can provide configuration values as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href">https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/849/1*YttOTYPj844QouQkh6bbFw.png" /><figcaption>Setting authentication configurations</figcaption></figure><p>13. In the third step, you must specify the existing category which you need to edit. Usually edit will be performed using a path parameter as the ID.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c498066a23f87eb01955f9d7a3a26f6c/href">https://medium.com/media/c498066a23f87eb01955f9d7a3a26f6c/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/848/1*F-JYREd-XNuwFQZASJq8Kw.png" /><figcaption>Setting the path parameter</figcaption></figure><p>14. In the fourth step, you must create the JSON payload by replacing the values which was provided in the <strong>“api_doc.xlsx”</strong> file. Since my payload contains the <strong>“name”</strong> and <strong>“description”</strong> properties and I have defined their values as <strong>“#name”</strong> and<strong> “#description” </strong>in the excel file, I will write the step as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1af7158edc7a24a115dd5d3af870ad9f/href">https://medium.com/media/1af7158edc7a24a115dd5d3af870ad9f/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/831/1*O_yE6lyl7x4E7qkkrptrvg.png" /><figcaption>Setting the request attributes of the JSON payload</figcaption></figure><p>15. As the fifth step, I can invoke the API as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href">https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/922/1*RL0-qmqq_Tzh9oujYs3FBw.png" /><figcaption>Invoking the API</figcaption></figure><p>16. Now I have invoked the API and I have the response as well. So I can validate the response using the following steps.</p><p>17. So in the sixth step, we’ll validate the status code of the response,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/be61ea9d3c6bf8ae44a9d91d61691d7c/href">https://medium.com/media/be61ea9d3c6bf8ae44a9d91d61691d7c/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/888/1*Ni4yptbEa5gpOyV1FPq1Dw.png" /><figcaption>Validating the response status code</figcaption></figure><p>18. Then we’ll validate the response contents using JSON Path Assertions as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6ddeab3b0384ef8ed609ddbd6abecc82/href">https://medium.com/media/6ddeab3b0384ef8ed609ddbd6abecc82/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/864/1*adR6c9n8YE2-40I4MVT3gw.png" /><figcaption>Validating the response content using JSON path</figcaption></figure><p>19. Now you have already completed the designing phase. You can execute this test scenario by clicking the green color play button on the left corner of the scenario heading</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/864/1*-evA4hpq37VCFAqnm8oCng.png" /><figcaption>Executing the test scenario</figcaption></figure><p>20. After you run the test, go to <strong><em>reports/html-report</em></strong> and open <strong>“index.html”</strong></p><p><strong>That’s how this framework works. I will guide you to perform some other API test automation in coming tutorials.</strong></p><p><strong>Keep in touch……….</strong></p><p><strong>Happy Automation !!!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5fb265ca5eaf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-4-5fb265ca5eaf">MaxSoft IntelliAPI — API Test Automation Tutorial 4</a> was originally published in <a href="https://medium.com/intelliapi">MaxSoft — IntelliAPI</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MaxSoft IntelliAPI — API Test Automation Tutorial 3]]></title>
            <link>https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-3-160f81e404f1?source=rss----97df6ee31bc4---4</link>
            <guid isPermaLink="false">https://medium.com/p/160f81e404f1</guid>
            <category><![CDATA[api]]></category>
            <category><![CDATA[intelliapi]]></category>
            <category><![CDATA[post]]></category>
            <category><![CDATA[maxsoft]]></category>
            <category><![CDATA[intelliapi-tutorials]]></category>
            <dc:creator><![CDATA[Osanda Deshan Nimalarathna]]></dc:creator>
            <pubDate>Mon, 07 Jan 2019 15:51:08 GMT</pubDate>
            <atom:updated>2021-05-16T16:42:36.203Z</atom:updated>
            <content:encoded><![CDATA[<h4>POST API Automation</h4><ol><li>Get a clone of IntelliAPI demo project from <a href="https://github.com/osandadeshan/MaxSoft-IntelliAPI-Demo/tree/v1.1.0">here</a>.</li><li>As an example we’ll automate a test to <strong>create a category.</strong></li><li>Open <strong>“api_doc.xlsx”</strong> file inside <strong><em>resources/api_document.</em></strong></li><li>Provide relevant details for <strong>“API_NAME”, “API_ENDPOINT”, “HTTP_METHOD”, “BODY_TYPE”</strong> and <strong>“JSON_PAYLOAD_TEMPLATE” </strong>columns as follows,</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Bm6Oem5jmYcGlA0I6Yqlng.png" /><figcaption>Adding the entry in API document excel file</figcaption></figure><p>5. Save the excel file.</p><p>6. Create a new specification in specs folder using any name.</p><p>7. Now you can see the below text file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/776/1*2zQNvzbIiT8oyhZdCwozkw.png" /><figcaption>Creating a spec file</figcaption></figure><p>8. You can give any name for Specification heading and Scenario heading.</p><p>9. In the first step, you must define the API name which you need to invoke. That API name should be included in the <strong>“api_doc.xlsx”</strong> file.</p><p>10. For this example I am going to use <strong>“Create A Category in Deck Service”</strong> as the API name since I have provided those details in the excel file in step 4.</p><p>11. Now you can write the first step as,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e1c045613338e6b21bd947171a834015/href">https://medium.com/media/e1c045613338e6b21bd947171a834015/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/786/1*trhxqmZ1VhfU-Fqnun1E-Q.png" /><figcaption>Preparing to invoke POST API</figcaption></figure><p>12. As the second step, you need to configure the authentication token. Since this API request needs the token, we can provide configuration values as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href">https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/870/1*H__PgClmaVpXnGslAGzR0g.png" /><figcaption>Setting authentication configurations</figcaption></figure><p>13. In the third step, you must create the JSON payload by replacing the values which was provided in the <strong>“api_doc.xlsx”</strong> file. Since my payload contains the <strong>“name”</strong> and <strong>“description”</strong> properties and I have defined their values as <strong>“#name”</strong> and<strong> “#description” </strong>in the excel file, I will write the step as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8c5d150fc91ffea893b0163b6ff742da/href">https://medium.com/media/8c5d150fc91ffea893b0163b6ff742da/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/861/1*RWmQyB9vy3VjC03i3KRRCw.png" /><figcaption>Setting the request attributes of the JSON payload</figcaption></figure><p>14. As the fourth step, I can invoke the API as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href">https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/867/1*pNmWF2DjEkfZazCIcMvsZQ.png" /><figcaption>Invoking the API</figcaption></figure><p>15. Now I have invoked the API and I have the response as well. So I can validate the response using the following steps.</p><p>16. So in the fifth step, we’ll validate the status code of the response,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c7c97951796378fe1281e27c7450f072/href">https://medium.com/media/c7c97951796378fe1281e27c7450f072/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/861/1*2sYJL2YGsIqnPdbG2NDRZw.png" /><figcaption>Validating the response status code</figcaption></figure><p>17. Then we’ll validate the response contents using JSON Path Assertions as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7f1eb402fdbd58287ccbeae81596f0c8/href">https://medium.com/media/7f1eb402fdbd58287ccbeae81596f0c8/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/853/1*TaktIYlOOxIehwaLYrdhmQ.png" /><figcaption>Validating the response content using JSON path</figcaption></figure><p>18. Now you have already completed the designing phase. You can execute this test scenario by clicking the green color play button on the left corner of the scenario heading</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/881/1*Bme6WuJaTkYycbBRpJGofQ.png" /><figcaption>Executing the test scenario</figcaption></figure><p>19. After you run the test, go to <strong><em>reports/html-report</em></strong> and open <strong>“index.html”</strong></p><p><strong>That’s how this framework works. I will guide you to perform some other API test automation in coming tutorials.</strong></p><p><strong>Keep in touch……….</strong></p><p><strong>Happy Automation !!!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=160f81e404f1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-3-160f81e404f1">MaxSoft IntelliAPI — API Test Automation Tutorial 3</a> was originally published in <a href="https://medium.com/intelliapi">MaxSoft — IntelliAPI</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MaxSoft IntelliAPI — API Test Automation Tutorial 2]]></title>
            <link>https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-2-53b50c613f42?source=rss----97df6ee31bc4---4</link>
            <guid isPermaLink="false">https://medium.com/p/53b50c613f42</guid>
            <category><![CDATA[intelliapi]]></category>
            <category><![CDATA[intelliapi-tutorials]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[get]]></category>
            <category><![CDATA[maxsoft]]></category>
            <dc:creator><![CDATA[Osanda Deshan Nimalarathna]]></dc:creator>
            <pubDate>Mon, 07 Jan 2019 15:50:58 GMT</pubDate>
            <atom:updated>2021-05-16T16:43:04.874Z</atom:updated>
            <content:encoded><![CDATA[<h4>GET API Automation</h4><ol><li>Get a clone of IntelliAPI demo project from <a href="https://github.com/osandadeshan/MaxSoft-IntelliAPI-Demo/tree/v1.1.0">here</a>.</li><li>As an example we’ll automate a test to <strong>get all decks.</strong></li><li>Open <strong>“api_doc.xlsx”</strong> file inside <strong><em>resources/api_document.</em></strong></li><li>Provide relevant details for <strong>“API_NAME”, “API_ENDPOINT”, “HTTP_METHOD”, “BODY_TYPE”</strong> and <strong>“JSON_PAYLOAD_TEMPLATE” </strong>columns as follows,</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*efFh2RDXshd3gQCwZgEdBA.png" /><figcaption>Adding the entry in API document excel file</figcaption></figure><p>5. Save the excel file.</p><p>6. Create a new specification in specs folder using any name.</p><p>7. Now you can see the below text file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/776/1*eZ5ix1sLvB6iD0HD_e0SFQ.png" /><figcaption>Creating a spec file</figcaption></figure><p>8. You can give any name for Specification heading and Scenario heading.</p><p>9. In the first step, you must define the API name which you need to invoke. That API name should be included in the <strong>“api_doc.xlsx”</strong> file.</p><p>10. For this example I am going to use <strong>“Get all Decks”</strong> as the API name since I have provided those details in the excel file in step 4.</p><p>11. Now you can write the first step as,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e221dda102eda0e3663f72fabe6554d5/href">https://medium.com/media/e221dda102eda0e3663f72fabe6554d5/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/797/1*ViwyiT9ZSGEhdag7ib3z7A.png" /><figcaption>Preparing to invoke GET API</figcaption></figure><p>12. As the second step, you need to configure the authentication token. Since this API request needs the token, we can provide configuration values as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href">https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/852/1*3WCKpgcWOmqZEeEryrie0g.png" /><figcaption>Setting authentication configurations</figcaption></figure><p>13. Since this is a GET request you won’t have any request body. But you may have path parameters and query parameters.</p><p>If you have <strong>path parameters</strong>, your next step would be,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9342abe3196d98126c174e7eb2b5968a/href">https://medium.com/media/9342abe3196d98126c174e7eb2b5968a/href</a></iframe><p>If you have <strong>query parameters</strong>, your next step would be,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9d559f2b35f63962035a40151dfda697/href">https://medium.com/media/9d559f2b35f63962035a40151dfda697/href</a></iframe><p>In this example, this API do not have any path parameter or query parameter. So I won’t add those steps to my spec file.</p><p>14. As the fourth step, I need to include <strong>headers</strong> for the API, because this header is mandatory for this API.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/565f3e841be677648fac7ea271064fba/href">https://medium.com/media/565f3e841be677648fac7ea271064fba/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/824/1*2Jo6cm1ckArMyyqsdfSY9Q.png" /><figcaption>Setting the request headers</figcaption></figure><p>15. As the fifth step, I can invoke the API as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href">https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/833/1*1oC_3zAi1ATJ0LgerD_Jfg.png" /><figcaption>Invoking the API</figcaption></figure><p>16. Now I have invoked the API and I have the response as well. So I can validate the response using the following steps.</p><p>17. So in the sixth step, we’ll validate the status code of the response,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/be61ea9d3c6bf8ae44a9d91d61691d7c/href">https://medium.com/media/be61ea9d3c6bf8ae44a9d91d61691d7c/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/769/1*nW-8DwpQmF3w2BOVVaiHaA.png" /><figcaption>Validating the response status code</figcaption></figure><p>18. Then we’ll validate the response contents using JSON Path Assertions as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/467fca2eb58585f21ec84ac2b7b2d69d/href">https://medium.com/media/467fca2eb58585f21ec84ac2b7b2d69d/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/841/1*yk7bFT3tnZVSv180-iz3cg.png" /><figcaption>Validating the response content using JSON path</figcaption></figure><p>19. Now you have already completed the designing phase. You can execute this test scenario by clicking the green color play button on the left corner of the scenario heading.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/841/1*5usBAUetIDK_YvOwzYDQ4A.png" /><figcaption>Executing the test scenario</figcaption></figure><p>20. After you run the test, go to <strong><em>reports/html-report</em></strong> and open <strong>“index.html”</strong></p><p><strong>That’s how this framework works. I will guide you to perform some other API test automation in coming tutorials.</strong></p><p><strong>Keep in touch……….</strong></p><p><strong>Happy Automation !!!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=53b50c613f42" width="1" height="1" alt=""><hr><p><a href="https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-tutorial-2-53b50c613f42">MaxSoft IntelliAPI — API Test Automation Tutorial 2</a> was originally published in <a href="https://medium.com/intelliapi">MaxSoft — IntelliAPI</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MaxSoft IntelliAPI — API Test Automation Tutorial 1]]></title>
            <link>https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-e5966185fa33?source=rss----97df6ee31bc4---4</link>
            <guid isPermaLink="false">https://medium.com/p/e5966185fa33</guid>
            <category><![CDATA[intelliapi-tutorials]]></category>
            <category><![CDATA[intelliapi]]></category>
            <category><![CDATA[maxsoft]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[login]]></category>
            <dc:creator><![CDATA[Osanda Deshan Nimalarathna]]></dc:creator>
            <pubDate>Mon, 07 Jan 2019 15:50:47 GMT</pubDate>
            <atom:updated>2021-05-16T16:44:29.146Z</atom:updated>
            <content:encoded><![CDATA[<h4>Login API Automation</h4><h4>Features:</h4><ul><li>Supports for <strong>GET/POST/PUT/DELETE</strong> HTTP Methods</li><li>More simplified steps to do a API Test Automation.</li><li>Supports for data driven testing</li><li>Supports for multiple headers</li><li>Supports for path parameters</li><li>Supports for query parameters</li><li>Authorization can be configured from a step</li><li>Authorization token can be used among all the specifications</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/859/1*A7UMAuERXIWc65caBvPm9Q.png" /></figure><ol><li>Get a clone of IntelliAPI demo project from <a href="https://github.com/osandadeshan/MaxSoft-IntelliAPI-Demo/tree/v1.1.0">here</a></li><li>As an example we’ll automate a <strong>login test</strong></li><li>Open <strong>“api_doc.xlsx”</strong> file inside <strong><em>resources/api_document</em></strong></li><li>Provide relevant details for <strong>“API_NAME”, “API_ENDPOINT”, “HTTP_METHOD”, “BODY_TYPE”</strong> and <strong>“JSON_PAYLOAD_TEMPLATE” </strong>columns as follows</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wvO3F7t2YGMuSCjh-shDBg.png" /><figcaption>Adding the entry in API document excel file</figcaption></figure><p>5. Save the excel file</p><p>6. Create a new specification in specs folder using any name</p><p>7. Now you can see the below spec file</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/753/1*4NftfK8L0zob3PEG1FvQPQ.png" /><figcaption>Creating a spec file</figcaption></figure><p>8. You can give any name for Specification heading and Scenario heading</p><p>9. In the first step, you must define the API name which you need to invoke. That API name should be included in the <strong>“api_doc.xlsx”</strong> file</p><p>10. For this example I am going to use “<strong>Login</strong>” as the API name since I have provided those details in the excel file in step 4</p><p>11. Now you can write the first step as,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a1d79ac923ba6299337c43a1372a8d50/href">https://medium.com/media/a1d79ac923ba6299337c43a1372a8d50/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/681/1*KGuTjciZJ7TUaep6CxXHSg.png" /><figcaption>Preparing to invoke Login API</figcaption></figure><p>12. As the second step, you need to configure the authentication token. Since the login request doesn’t contain the token, we can provide configuration values as N/A</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href">https://medium.com/media/7b1fcb603a8f95037d7aaf7ce9d9ade2/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/745/1*IA7CHHZQnvdPjdsexwCxSA.png" /><figcaption>Setting authentication configurations</figcaption></figure><p>13. In the third step, you must create the JSON payload by replacing the values which was provided in the <strong>“api_doc.xlsx”</strong> file. Since my login payload contains the <strong>“username”</strong> and <strong>“password”</strong> properties and I have defined their values as <strong>“#username”</strong> and<strong> “#password” </strong>in the excel file, I will write the step as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/20930ce223d2590e9f21a13e353bb3a7/href">https://medium.com/media/20930ce223d2590e9f21a13e353bb3a7/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/764/1*zupy-gG19heqtz3m3G6Jbw.png" /><figcaption>Setting the request attributes of the JSON payload</figcaption></figure><p>14. As the fourth step, I can invoke the API as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href">https://medium.com/media/202be36713a8a2ec6ea3efed0878e92e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/785/1*Akijn8XpGIoFWtycqRuKDw.png" /><figcaption>Invoking the API</figcaption></figure><p>15. Now I have invoked the API and I have the response as well. So I can validate the response using the following steps.</p><p>16. So in the fifth step, we’ll validate the status code of the response,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c7c97951796378fe1281e27c7450f072/href">https://medium.com/media/c7c97951796378fe1281e27c7450f072/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/756/1*BTJTTqjXIYSdIj4LcA42yA.png" /><figcaption>Validating the response status code</figcaption></figure><p>17. Then we’ll validate the response contents using JSON Path Assertions as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8edc224b6cf8784a0142fc712d32ca58/href">https://medium.com/media/8edc224b6cf8784a0142fc712d32ca58/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/775/1*GTUuG4hPxP7FPaW0YBhqLg.png" /><figcaption>Validating the response content using JSON path</figcaption></figure><p>18. Usually in the login response we can find the access token which will be used to authorize the next requests. So all we need to do is, save that token. It can be done as follows,</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b2d06bf948b9a8f678aebbab7ebba80c/href">https://medium.com/media/b2d06bf948b9a8f678aebbab7ebba80c/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/788/1*A65IFGzdyz9LbEUITQPmDQ.png" /><figcaption>Saving the access token inside the response into a text file</figcaption></figure><p>19. Now you have already completed the designing phase. You can execute this test scenario by clicking the green color play button on the left corner of the scenario heading</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/788/1*7-17lVjWzYQG5_n-d9VR8A.png" /><figcaption>Executing the test scenario</figcaption></figure><p>20. After you run the test, go to <strong><em>reports/html-report</em></strong> and open <strong>“index.html”</strong></p><p>21. You can see the test execution report as follows</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*d9eQUCkG1yauecg_ljKcgw.png" /><figcaption>Sample test execution report</figcaption></figure><p><strong>That’s how this framework works. I will guide you to perform some other API test automation in coming tutorials.</strong></p><p><strong>Keep in touch……….</strong></p><p><strong>Happy Automation !!!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e5966185fa33" width="1" height="1" alt=""><hr><p><a href="https://medium.com/intelliapi/how-to-use-maxsoft-ata-framework-for-api-test-automation-e5966185fa33">MaxSoft IntelliAPI — API Test Automation Tutorial 1</a> was originally published in <a href="https://medium.com/intelliapi">MaxSoft — IntelliAPI</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MaxSoft — IntelliAPI]]></title>
            <link>https://medium.com/intelliapi/maxsoft-ata-framework-for-api-test-automation-9cffd25a0b15?source=rss----97df6ee31bc4---4</link>
            <guid isPermaLink="false">https://medium.com/p/9cffd25a0b15</guid>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[gauge]]></category>
            <category><![CDATA[intelliapi]]></category>
            <category><![CDATA[maxsoft]]></category>
            <dc:creator><![CDATA[Osanda Deshan Nimalarathna]]></dc:creator>
            <pubDate>Mon, 07 Jan 2019 15:50:34 GMT</pubDate>
            <atom:updated>2021-05-16T16:45:33.625Z</atom:updated>
            <content:encoded><![CDATA[<h3>MaxSoft — IntelliAPI</h3><h4>Simple, codeless and efficient framework for API Test Automation</h4><h4>Agenda</h4><ul><li>Introduction to API Testing<br> - What is an API?<br> - What is API Testing?</li><li>Why should invest time in API testing?</li><li>What tests should be performed on API Testing?</li><li>What are the types of defects that API Testing will help remove?</li><li>API Testing Tools</li><li>MaxSoft — IntelliAPI Framework<br> - Technologies/Frameworks used<br> - Supported platforms/languages<br> - Advantages<br> - Git Source</li></ul><h4><strong>Introduction to API Testing</strong></h4><p><strong>What is an API?</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/335/1*qnoYtUbuHv4nylhBkzXwsw.png" /></figure><p>An API (Application Programming Interface) is a set of application code, standards, protocols and procedures that can be used as an interface by external software applications or between different layers of the same application (AKA: “Logic Tier” or “Business Layer”).</p><p>When creating an application API, we will determine how other systems will interact, communicate and share data with our system in the best and efficient way.</p><p><strong>What is API Testing?</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/750/1*kFN9ooF1tx0r69nE7qvJQg.jpeg" /></figure><p>API testing is a testing approach that is used to validate that APIs and the integration they should provide actually work as defined at the beginning of the project.</p><p>The main activity of this testing approach is to validate the API response or output based on varying test conditions, the API output can be a reference to another API, Different types of data, and Pass/Fail status.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/859/1*EcXY38Kbh1-WAN_T9P929Q.png" /></figure><h4><strong>Why should invest time in API testing?</strong></h4><p>Think about a scenario that you release an API to other programmers with the attention that they will use it as an interface interact with the application, any defect that will affect this basic goal, will resolve an additional development and testing activities (Similar to any other bug found in customer environment) that will affect both the costs and reputation of the company.</p><p>Although API’s are usually published for free as an open source code that other developers can use and expand it, there is no way that the market will adopt and use it if it’s not efficient, effective and off course free from any major defects.</p><h4><strong>What tests should be performed on API Testing?</strong></h4><ol><li>Test that the API does not have scenarios that it fails to return any response.</li><li>Test that the API can be integrated with a corresponding system.</li><li>Test that the API can be integrated with a corresponding API’s.</li><li>Test the API outcome based on different input condition.</li><li>Test different performance aspects of the API.</li><li>Test that the API can process a lot of inputs.</li><li>Test that the API can handle negative inputs.</li><li>Test different security aspects of the API.</li></ol><h4><strong>What are the types of defects that API Testing will help remove?</strong></h4><ol><li>Any Security breach in the API that other programmers can use to attack the system.</li><li>Performance related defects.</li><li>Security related defects.</li><li>Errors and failures that are not handled in a graceful way.</li><li>Any functional defect related to the API functions.</li><li>Unused code, Duplicate functionality or unused flags.</li></ol><h4><strong>API Testing Tools</strong></h4><ol><li>Postman</li><li>Fiddler</li><li>SoapUI</li></ol><h4>MaxSoft — IntelliAPI</h4><p>The main reason for developing this framework is to provide an easy way for Technical QA/Developer/Non-technical QA to perform API testing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/853/1*dtMR2dam7B1tvwAeMiO9wA.png" /></figure><p><strong>Technologies/Frameworks used</strong></p><ol><li>Java</li><li>Gauge Framework</li><li>Rest Assured</li><li>Apache POI</li><li>Junit</li><li>Apache Maven</li></ol><p><strong>Supported Platforms</strong></p><ul><li>Windows</li><li>Linux</li><li>Mac OS</li></ul><p><strong>Supported Languages</strong></p><ul><li>Java</li></ul><p><strong>Design Diagram</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BnR6wxAcmb5Kedaoyy9A2Q.png" /></figure><p><strong>Advantages</strong></p><ol><li>Generation of an executable document.</li><li>Human readable tests, business language and Mark-down syntax.</li><li>Tests can be designed even by a non- technical person.</li><li>Ability to validate backend databases.</li><li>Generate a HTML report with test details for every test execution.</li><li>Parallel execution.</li><li>Live execution report.</li><li>Automated emails for test execution summary with graphical representations.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/888/1*9Bo2uaOPUEkdls6fCslosA.png" /></figure><p><strong>Git Source</strong></p><ul><li>You can clone demo project from <a href="https://github.com/osandadeshan/MaxSoft-IntelliAPI-Demo/tree/v1.1.0">here</a></li><li>If you haven’t install Gauge Framework in your computer, please read the below article to setup it.<br><a href="https://medium.com/@osanda.deshan/cross-platform-gauge-installation-4e9e4809c935">Installing Gauge</a></li></ul><p><strong>Happy Automation !!!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9cffd25a0b15" width="1" height="1" alt=""><hr><p><a href="https://medium.com/intelliapi/maxsoft-ata-framework-for-api-test-automation-9cffd25a0b15">MaxSoft — IntelliAPI</a> was originally published in <a href="https://medium.com/intelliapi">MaxSoft — IntelliAPI</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>