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("總數不對");
          })

總結-測試規劃git

  • 一個js文件針對單個接口請求進行測試
  • 一個it僅測試一個接口功能
  • 按文件夾來劃分功能模塊,按js文件來劃分API請求
相關文章
相關標籤/搜索