Testing APIs manually could a frustrating task.
I have been exploring different tools to do automation testing. So, next time I don’t have to execute the same things again manually.
Over the period of last few weeks, I have been exploring and experimenting with various testing tools and frameworks, and during that I found that with Postman, I can do my API management as well as write testcases to assert the API responses using Postman test snippet feature.
I was amazed to automate test cases but frustrated to write test scripts to check API status code or data length etc…
Then, I looked for more testing automation tools like Rest Assured, Selenium, Katalon, etc… but these also required writing test cases, and also required writing data mocks.
After this, I started looking for no-code test automation tools and found Keploy with which I was able to record Postman API call as a test case.
In this article, I will brief about the following steps that I took to automate my test cases:
1. Setting up a sample application(URL Shortener) locally — optional
2. Creating test snippets in Postman
3. Recording test cases in Keploy
Moving on to the first step…
Setting up a Sample Application (URL Shortener)
Let’s clone and run a sample URL Shortener application locally.
git clone https://github.com/keploy/samples-go && cd samples-go/echo-sqlgo mod download
Start the PostgreSQL instance in Docker for this sample application.
In Postgres DB the sample application is storing the shortened URL for a given long URL.
docker-compose up -d
Now open a new terminal and run the sample application
go run handler.go main.go
Doing this you will start the localhost server for the URL shortener. application.
Now we can try making some API calls
Let’s Post a long URL, say, github.com , which will add a shortened URL in the database.
You can import the following curl into Postman
curl --request POST \
--url http://localhost:8080/url \
--header 'content-type: application/json' \
After making the API call, you will get the shortened URL for github.com
Let make another API call to GET the shortened URL content.
curl --request GET \
Since we understood both the API of the sample application, lets automate the testing for these APIs.
Creating test snippets in Postman
Moving towards the testing of this API!
I will be making the following testcases here:
- Status code
- Response time
Now, as I have done above.
Just to check if my request gives me a status 200/201/202 etc, or to check the response Time, I have to manually write testcases in Postman.
This seems plausible when the testing is done on a small scale.
What would you do if you have an API with 1000+ data in it and you have to verify each of its content?
Recording test cases in Keploy
To get started with Keploy, I will follow the below steps:
git clone https://github.com/keploy/keploy.git && cd keploydocker-compose up
Once the Keploy server is up and running, we will start our application server over localhost.
To do that, run the following command in the terminal.
docker-compose up -dgo run handler.go main.go
Once the server is setup, run your Postman as usual and make API calls.
Keploy locahost can be accessed on localhost:8081 and you can use the following link to get to the test cases directly
As you can see, we have our testcases generated by Keploy and now we just need to start testing.
Moving forwards, kill your localhost and run the below command to do run testing
go test -coverpkg=./... -covermode=atomic ./...
this should show you have 74.4% coverage without writing any code!
Start your server again with
go run handler.go main.go
go back to keploy localhost and check the Test runs
You can find that Keploy has done in total 6 tests and each tests have Passed.
The major point here is that we didn’t made any test case on our own🤩!
We just did API Testing on both Postman and Keploy and as we experienced,
one has to add test cases using snippets when testing using Postman.
Whereas I didn’t had to write a single line of test script to do testing.
Like this, We are done with the article!!
Test your API without any burden of manually writing Test Cases and deliver an error-free API 😁.