swagger-test-templates模块

swagger-test-templates模块

npm地址

github地址

Swagger 规范生成测试代码(version 2.0)

用法

通过npm安装

npm install --save swagger-test-templates

使用您的Swagger API规范生成API的测试文件。

var stt = require('swagger-test-templates');
var swagger = require('/path/to/swagger.json');
var config = {
  assertionFormat: 'should',
  testModule: 'supertest',
  pathName: ['/user', '/user/{id}'],
  loadTest: [{pathName:'/user', operation:'get', load:{requests: 1000, concurrent: 100}}, { /* ... */ }],
  maxLen: 80,
  pathParams: {
    "id": "0123"
  }
};

// Generates an array of objects containing the test file content, following specified configuration
// the array contains objects with the scheme { name: <test-file-name>, test: <test-file-content> }
// tests = [ {name: base-path-test.js, test: ... }, {name: users-test.js, test: ... }]
var tests = stt.testGen(swagger, config);

API

swagger-test-templates模块导出具有下列参数和返回值的函数:

参数:

  • assertionFormat 必选: should,expectassert其中之一。 选择应该在输出测试代码中使用哪种断言方法。

  • testModule 必选 :supertest或者request其中之一。通过request模块还是supertest模块进行api接口的调用。

  • pathName 必选 :在您的Swagger API规范中列出可用的路径名称,用于生成测试文件。空数组的话会生成所有路径的测试文件。

  • statusCodes 可选:需要测试的状态数组。排除此参数将生成所有响应的测试。只有当状态代码列在 Swagger API 规范中时,才为状态代码生成测试代码。

  • loadTest:可选: 针对Swagger API 规范中的对象信息列表来生成压力测试。如果指定,则pathName 和operation 是

    必须的。,请求次数是可选字段,默认值为1000,并发默认值为100。

  • maxLen 可选:最大行长度。如果设置为-1,说明将不会被截断。默认值为80。

  • pathParams 可选:对象,该对象包含特定路径参数的值。

  • templatesPath 可选:生成测试文件的自定义模板路径字符串。注意:将所有模板复制到自定义目录中,这是一个“all-or-nothing”路径。

  • requestData 可选:包含请求的数据的对象,请参见requestData章节获取更多细节。

返回值:

每个字符串都包含测试文件和文件名的数组。使用此信息将这些文件写入磁盘。

发送请求数据(requestData)

基于您的模式,有几个模块允许您生成模拟请求payloads。可以通过填充模块的requestData属性,将此模拟数据连同该模块生成的测试一起发送。模拟数据需要具有以下结构:

模拟HTTP请求体

{
   '/endpoint': {
       operation: {
           'responseCode': [{ body: {}, description:'some description of the data'}]
       }
   }
 }

模拟路径参数

{
   '/pet/{name}': {
       get: {
           '200': [{ name: 'spot', description:'some description of the data'}]
       }
   }
 }

模拟查询参数

{
   '/pet': {
       get: {
           '200': [{ name: 'spot', description:'some description of the data'}]
       }
   }
 }

模拟HTTP报头

这将添加一个HTTP头X-Token设置为WaErthyDtufJ,假设您的 swagger API 具有该头的定义。

{
   '/pet': {
       get: {
           '200': [{ 'X-Token': 'waestrydtufj', description:'some description of the data'}]
       }
   }
 }

支持状态代码请求数据数组中的多个对象。例如,这可能是:

{
     '/pet': {
         post: {
             '200': [
               {
                 body: {
                  id: 1,
                  otherProperty: 'some property that is a string'
                 },
                 description: 'the description for this data'
               },
               {
                 body: {
                  id: 2,
                  otherProperty: 'another value of that property'
                 },
                 description: 'the description for another data'
               }
             ]
         },
         get: {
            '200': [
              {
                guid: 'some_string_to_place_in_path',
                anotherPathParam: 100,
                description: 'valid path or query parameters'
              },
              {
                guid: 'some_other_string_to_place_in_path',
                anotherPathParam: 200,
                description: 'another valid path or query parameters'
              }
          ]
         }
     }
 }

注意:对于GET请求,匹配的数据将被传递到 pathParams。因此,直接设置config.pathParams将具有相同的效果(见上文)。

responseCode中的每个mockData项将用于生成测试。描述将被添加到“it”函数以供参考。

在你的标记中Swagger API参数显式标记为required: false,只有在请求数据对象中有匹配值时才会设置。在Swagger API规范中没有显式设置required标志的必要参数和参数将被设置为requestData对象中的匹配值或“DATA GOES HERE”字符串。

Last updated

Was this helpful?