API测试-Super Test

  • 框架选择
    • Super Test:基本的HTTP请求,返回判断
    • Chai:对返回的结果进行判断
    • grunt:集成jenkins
    • grunt-mocha-test:grunt任务
  • Jenkins环境配制
    • 使用Jenkins调度mochaTest任务,并配制结果输出相关 
    • 执行环境配制
      • 多个环境之间的自动切换: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
      •  1 var config = require('../config/endpoints'),
         2     request = require('supertest')(config.host[config.env]);
         3 
         4 
         5 describe('测试访问baidu首页.', function() {
         6     it('返回状态码为200.', function(done) {
         7         request.get('/')
         8             .expect(200)
         9             .end(done);
        10     });
        11 
        12 });
      • 进入到api-test目录,运行grunt
      • ➜  api-test git:(master) ✗ grunt
        Running "mochaTest:test" (mochaTest) task
        
        
          测试访问baidu首页.
            ✓ 返回状态码为200.       (958ms)
        
        
          1 passing (964ms)
        
        
        Done, without errors.
    •  测试(失败):访问http://www.baidu.com时,返回的状态码是否为201
      •  修改demo.js文件
      •  1 var config = require('../config/endpoints'),
         2     request = require('supertest')(config.host[config.env]);
         3 
         4 
         5 describe('测试访问baidu首页.', function() {
         6     it('返回状态码为200.', function(done) {
         7         request.get('/')
         8              //此处失败
         9             .expect(201)
        10             .end(done);
        11     });
        12 
        13 }); 
      • 执行测试:grunt
      • ➜  api-test git:(master) ✗ grunt
        Running "mochaTest:test" (mochaTest) task
        
        
          测试访问baidu首页.
            1) 返回状态码为200.
        
        
          0 passing (2s)
          1 failing
        
          1) 测试访问baidu首页. 返回状态码为200.:
             Error: expected 201 "Created", got 200 "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请求的数据
      • 1 request
        2         .post('/post/data')
        3         .send({
        4           "A": 1,
        5           "B": 2
        6         })
    • 对expect进行调整:如预期返回body中totalCount为6
      • .expect(function(res){
             //返回中totalCount为6
             if (!(res.body.totalCount.should.equal(6))) throw new Error("总数不对");
          })

总结-测试规划

  • 一个js文件针对单个接口请求进行测试
  • 一个it仅测试一个接口功能
  • 按文件夹来划分功能模块,按js文件来划分API请求
原文地址:https://www.cnblogs.com/s380774061/p/4814756.html