python接口測試之mock(九)


      在http://www.cnblogs.com/weke/articles/6859021.html中對mock-server已經做了

初步的介紹,今天這里繼續接着之前的介紹進行,我們先看之前的mock-server部分,之前編寫

了一個登錄的mock,具體json文件見如下的內容:

[
  {
    "request":
    {
      "method":"post",
      "uri":"/login",
      "json":
      {
        "username":"admin",
        "password":"admin",
        "roleID":22
      }
    },
    "response":
    {
      "json":
      {
        "username":"wuya",
        "userID":22,
        "token":"asdgfhh32456asfgrsfss"
      }
    }
  }
]

 

查看上面的內容,我們可以看出,這樣的方式並不是那么的友好,在UI或者接口的自動化測試中,我們知道在

TDD的模式中,對數據進行分離,這樣也是為了維護的方便,這樣的目的是為了后期自動化測試用例的擴展性,

和它的易維護性,那么下來我們來對上面的json文件進行修改下,對response部分的數據進行分離下,把它

放在一個文件中,這樣就可以分離了出來,我們把response的內容從login.json分離到login_response.json

切記login.json與login_response.json務必保持在同一個目錄下,見login.json的內容:

[
  {
    "request":
    {
      "method":"post",
      "uri":"/login",
      "json":
      {
        "username":"admin",
        "password":"admin",
        "roleID":22
      }
    },
    "response":
    {
      "file":"login_response.json"
    }
  }
]

 

見login_response.json文件的內容:

{
  "username":"wuya",
  "userID":22,
  "token":"asdgfhh32456asfgrsfss"
}

 

執行login.json文件后,訪問該接口,看是否OK,見執行login.json文件的命令:

使用postman查看該接口,看是否OK,見如下的截圖:

    下面我們再進行一個業務,就是輸入一個車牌號,查詢該車牌號的顯示時長,和它的停車費用,直接在loginjson

文件中完善,見完善后的內容:

[
  {
    "request":
    {
      "method":"post",
      "uri":"/login",
      "json":
      {
        "username":"admin",
        "password":"admin",
        "roleID":22
      }
    },
    "response":
    {
      "file":"login_response.json"
    }
  },

  {
    "request":
    {
      "method":"post",
      "uri":"/parkinside",
      "json":
      {
        "token":"asdgfhh32456asfgrsfss",
        "vpl":"AJ3585"
      }
    },
    "response":
    {
      "file":"parkinside.json"
    }
  }
]

 

見parkinside.json文件的內容:

{
  "vplInfo":
  {
    "userID":22,
    "username":"wuya",
    "vpl":"京AJ3585"
  },
  "Parking time long":"20小時18分鍾",
  "Parking fee":"20$"
}

 

見查詢停車時長的接口請求的結果,見如下的postman截圖:

 

下面我們通過python語言,來對如上的二個接口進行實戰的操作,切記parkinside的接口是在登錄之后才可以操作的業務,未登錄操作該業務,返回502無效的

token,見實現的代碼:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

import  unittest
import  requests

class MockTest(unittest.TestCase):
    def setUp(self):
        self.url='http://localhost:12306'
        
    def tearDown(self):
        pass
    
    def test_login(self,url='/login'):
        '''驗證登錄的接口'''
        data={
            "username":"admin",
            "password":"admin",
            "roleID":22
        }
        r=requests.post(self.url+url,json=data)
        self.assertEqual(r.status_code,200)
        self.assertEqual(r.json()['username'],'wuya')
        
    def getToken(self,url='/login'):
        '''登錄成功后獲取token'''
        data={
            "username":"admin",
            "password":"admin",
            "roleID":22
        }
        r=requests.post(self.url+url,json=data)
        return r.json()['token']
    
    def test_parkingside(self,url='/parkinside'):
        '''驗證查詢停車時長接口'''
        data={
            "token":self.getToken(),
            "vpl":"AJ3585"
        }
        r=requests.post(self.url+url,json=data)
        self.assertEqual(r.status_code,200)
        self.assertEqual(r.json()['Parking time long'],u'20小時18分鍾')
        self.assertEqual(r.json()['Parking fee'], u'20$')
        
if __name__=='__main__':
    unittest.main(verbosity=2)

 

     關於mock-server本博客會繼續更新,如您感興趣,也可掃描如下的二維碼關注本人的微信公眾號,謝謝!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{
"username":"wuya",
"userID":22,
"token":"asdgfhh32456asfgrsfss"
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM