在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):kiranz/just-api开源软件地址(OpenSource Url):https://github.com/kiranz/just-api开源编程语言(OpenSource Language):JavaScript 95.1%开源软件介绍(OpenSource Introduction):Just-APIJust-API is a declarative, specification based test framework for In simple terms, users build a test suite by providing a set of request and response validation specification in a YAML file. Each suite can have one or more specs. Just-API builds the request, sends it to server and validates response as per the specification. One can choose to validate any or all of following
or Provide a custom Javascript function to validate the response Find more here
LinksFeatures
Getting Started
Installation$ npm install just-api Following is a simple example showing usage of Just-API. $ mkdir specs
$ vim specs/starwars_service.yml Write following suite in your editor meta:
name: Star Wars suite
configuration:
scheme: https
host: swapi.co
base_path: /api
specs:
- name: get Luke Skywalker info
request:
path: /people/1/
method: get
response:
status_code: 200
headers:
- name: content-type
value: !!js/regexp application/json
json_data:
- path: $.name
value: Luke Skywalker Back in the terminal $ ./node_modules/.bin/just-api
✓ get Luke Skywalker info (1216ms)
Done: specs/starwars_service.yml (Passed)
0 skipped, 0 failed, 1 passed (1 tests)
0 skipped, 0 failed, 1 passed (1 suites)
Duration: 1.3s Testing GraphQL APIsFollowing example tests a GraphQL API that returns Person info for a given name. Create a YAML suite and run just-api. meta:
name: GraphQL Starwars service
configuration:
host: swapi.graph.cool
scheme: https
specs:
- name: Get Details of a character
request:
method: post
headers:
- name: content-type
value: application/json
payload:
body:
type: json
content:
query: >
{
Person(name: "Luke Skywalker") {
name,
id,
gender
}
}
variables: null
operationName: null
response:
status_code: 200
json_data:
- path: $.data.Person.name
value: "Luke Skywalker" A chained request flow with hook and custom validationWhen you need to test complex chained API flows, run dependencies in hooks to fetch pre-requisite data and pass it to actual test. Following example shows how to run dependencies using a hook, get data and validating response with a custom validator function. meta:
name: Starwars suite
configuration:
scheme: https
host: swapi.co
base_path: /api
specs:
- name: get R2-D2 info
request:
path: /people/3/
method: get
response:
status_code: 200
json_data:
- path: $.name
value: R2-D2
- name: search R2-D2 info
before_test:
run_type: inline
inline:
function: !js/asyncFunction >
async function() {
var response = await this.runSpec('get R2-D2 info');
var jsonData = JSON.parse(response.body);
this.test.query_params = { name: jsonData.name };
}
request:
path: /people
method: get
response:
status_code: 200
custom_validator:
run_type: inline
inline:
function: !!js/function >
function() {
var jsonData = JSON.parse(this.response.body);
var r2d2 = jsonData.results.find(result => result.name === 'R2-D2');
if (!r2d2)
throw new Error('R2-D2 not returned in search results');
} Note: You can also place custom JS functions in a module and specify the function name, module path in YAML to import. More advanced stuff can be done with Just-API. Documentation says it all. Take a look at Just-API Website for detailed documentation. If you are looking to use Docker to run Just-API, you might want to checkout Just-API docker boilerplate here MaintainerKiran [email protected] LicenseReferencesDonationIf this project helps you in anyway, Please consider making a donation ContributingNOTE: recommend Node
Test Structure
You may need to create/modify both a sample suite/spec and corresponding JS assertion Code Quality & FormattingTODO: add linter/hinter/prettier or whatever spec is used |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论