- 框架選擇
- Super Test:基本的HTTP請求,返回判斷
- Chai:對返回的結果進行判斷
- grunt:集成jenkins
- grunt-mocha-test:grunt任務
- Jenkins環境配制
- 使用Jenkins調度mochaTest任務,並配制結果輸出相關
- 執行環境配制
- 多個環境之間的自動切換:export NODE_ENV=dev && cd api-test && grunt
- PS:若需要指定地址執行時,僅需要把local修改需要的目標地址即可
- 使用Jenkins調度mochaTest任務,並配制結果輸出相關
- 小樣例
- 測試:訪問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。此處可為測試的驗證點
- 測試:訪問http://www.baidu.com時,返回的狀態碼是否為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("總數不對"); })
-
- 一次執行N個js文件
總結-測試規划
- 一個js文件針對單個接口請求進行測試
- 一個it僅測試一個接口功能
- 按文件夾來划分功能模塊,按js文件來划分API請求