API测试-Super Test

时间:2024-05-21 23:05:14
  • 框架选择
    • Super Test:基本的HTTP请求,返回判断
    • Chai:对返回的结果进行判断
    • grunt:集成jenkins
    • grunt-mocha-test:grunt任务
    • API测试-Super Test
  • Jenkins环境配制
    • 使用Jenkins调度mochaTest任务,并配制结果输出相关
      • API测试-Super Test
    • 执行环境配制
      • API测试-Super Test
      • 多个环境之间的自动切换:export NODE_ENV=dev && cd api-test && grunt
    • PS:若需要指定地址执行时,仅需要把local修改需要的目标地址即可
  • 小样例
    • 测试:访问http://www.baidu.com时,返回的状态码是否为200(成功)
      • 修改endpoints.js中local地址为:http:www.baidu.com
      • 修改Gruntfile.js中src为:test/module/demo.js
      • 在module目录下新创建文件demo.js
      •  var config = require('../config/endpoints'),
        request = require('supertest')(config.host[config.env]); describe('测试访问baidu首页.', function() {
        it('返回状态码为200.', function(done) {
        request.get('/')
        .expect(200)
        .end(done);
        }); });
      • 进入到api-test目录,运行grunt
      • ➜  api-test git:(master) ✗ grunt
        Running "mochaTest:test" (mochaTest) task 测试访问baidu首页.
        ✓ 返回状态码为200. (958ms) passing (964ms) Done, without errors.
    • 测试(失败):访问http://www.baidu.com时,返回的状态码是否为201
      • 修改demo.js文件
      •  var config = require('../config/endpoints'),
        request = require('supertest')(config.host[config.env]); describe('测试访问baidu首页.', function() {
        it('返回状态码为200.', function(done) {
        request.get('/')
        //此处失败
        .expect(201)
        .end(done);
        }); });
      • 执行测试:grunt
      • ➜  api-test git:(master) ✗ grunt
        Running "mochaTest:test" (mochaTest) task 测试访问baidu首页.
        ) 返回状态码为200. passing (2s)
        failing ) 测试访问baidu首页. 返回状态码为200.:
        Error: expected "Created", got "OK" Warning: Task "mochaTest:test" failed. Use --force to continue. Aborted due to warnings.
      • 分析:expect(201)为期待的状态码为201,但实际返回的状态码为200。此处可为测试的验证点
  • 强化
    • 一次执行N个js文件
      • 修改Gruntfile.js中src即可
    • 设置请求的header
      • request.get('/')
        .set('Content-Type','application/json')
    • 设置post请求的数据
      •  request
        .post('/post/data')
        .send({
        "A": 1,
        "B": 2
        })
    • 对expect进行调整:如预期返回body中totalCount为6
      • .expect(function(res){
        //返回中totalCount为6
        if (!(res.body.totalCount.should.equal(6))) throw new Error("总数不对");
        })

总结-测试规划

  • 一个js文件针对单个接口请求进行测试
  • 一个it仅测试一个接口功能
  • 按文件夹来划分功能模块,按js文件来划分API请求

相关文章