apitest: RESTful APIs testing command. BDD-like, blackbox, automated testing with containers or CIs
- API testing command for containers and CIs.
- Simplest, Fastest, Smallest API test tool.
- BDD like YAML Testing format: Readable and Writable.
- Smallest docker image (It will be about 10MB)
- JSON Format support.
- Mock support(developping)
- IT only supports single repo testing.
- Other servers are all mocks.
Purpose: Why I develop apitest?
- I want to use Automatic Sequential API Testing Tool in docker or CI.
- I can't find any docker friendly API Testing tools.
- I don't need GUI, I don't need multifunctional testing.
So I develop apitest, which is small, docker friendly and minimum.
Why and When you use apitest?
- When you develop an API server, try apitest with CI.
- apitest provides your development automatic continuous testing.
- It brings you more safety and faster development.
- Testing Frameworks with GUI: apitest is a minimal simple command for CI.
- Karate: Karate is great tool so apitest is sub-choise when you want to do minimum test in CI.
- Manual Testing: apitest has Repeatablity and doesn't have human errors.
Example of yaml file
Feature: Sample Yaml
Scenarios:
- Scenario: Normal
description: Normal
Given:
host: http://server:8080
Tests:
- When:
method: GET
path: /api
Then:
status: 200
format: "empty"
- When:
path: "/api/users/"
method: POST
body: '{"Token": "Foo", "Name": "Foo"}'
Then:
status: 200
format: application/json
require:
- 'match {"name": "Foo", "Info": "#String"}'
- When:
path: /api/users/
method: POST
body: '{"Token": "Foo"}'
Then:
status: 200
format: application/json
require:
- 'match {"users": "#Array"}'
DEMO
please run test.sh.
Install
- using locally
- using in docker
Requirements: Go 1.12.x
go get -u github.com/aimof/apitest/cmd/apitest
# workdir: $GOPATH/src/github.com/aimof/cmd/apitest
go install
Using in docker
See cmd/apitest/README.md
Usage
apitest /path/to/test.yaml
Request body and Response body
Types
NumberType = "#Number"
StringType = "#String"
BoolType = "#Bool"
ObjectType = "#Object"
ArrayType = "#Array"
NullType = "#Null"
Testing
# in the repository root
go test ./...
./test.sh
PLAN
- Change YAML Format to BDD like Style (Destructive change): Done
- Make Docker Image: Trial is done.
- Support Single Mock (Destructive change)
- Support Multiple Mock (Destructive change)
Contribution
Please feel free to make Issues or PRs but I will plan some destructive changes.
LICENSE
MIT