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

初步的介绍,今天这里继续接着之前的介绍进行,我们先看之前的mock-server部分,之前编写

了一个登录的mock,具体json文件见如下的内容:

python接口测试之mock(九)
[
  {
    "request":
    {
      "method":"post",
      "uri":"/login",
      "json":
      {
        "username":"admin",
        "password":"admin",
        "roleID":22
      }
    },
    "response":
    {
      "json":
      {
        "username":"wuya",
        "userID":22,
        "token":"asdgfhh32456asfgrsfss"
      }
    }
  }
]
python接口测试之mock(九)

 

查看上面的内容,我们可以看出,这样的方式并不是那么的友好,在UI或者接口的自动化测试中,我们知道在

TDD的模式中,对数据进行分离,这样也是为了维护的方便,这样的目的是为了后期自动化测试用例的扩展性,

和它的易维护性,那么下来我们来对上面的json文件进行修改下,对response部分的数据进行分离下,把它

放在一个文件中,这样就可以分离了出来,我们把response的内容从login.json分离到login_response.json

切记login.json与login_response.json务必保持在同一个目录下,见login.json的内容:

python接口测试之mock(九)
[
  {
    "request":
    {
      "method":"post",
      "uri":"/login",
      "json":
      {
        "username":"admin",
        "password":"admin",
        "roleID":22
      }
    },
    "response":
    {
      "file":"login_response.json"
    }
  }
]
python接口测试之mock(九)

 

见login_response.json文件的内容:

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

 

执行login.json文件后,访问该接口,看是否OK,见执行login.json文件的命令:

python接口测试之mock(九)

使用postman查看该接口,看是否OK,见如下的截图:

python接口测试之mock(九)

    下面我们再进行一个业务,就是输入一个车牌号,查询该车牌号的显示时长,和它的停车费用,直接在loginjson

文件中完善,见完善后的内容:

python接口测试之mock(九)
[
  {
    "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"
    }
  }
]
python接口测试之mock(九)

 

见parkinside.json文件的内容:

python接口测试之mock(九)
{
  "vplInfo":
  {
    "userID":22,
    "username":"wuya",
    "vpl":"京AJ3585"
  },
  "Parking time long":"20小时18分钟",
  "Parking fee":"20$"
}
python接口测试之mock(九)

 

见查询停车时长的接口请求的结果,见如下的postman截图:

python接口测试之mock(九)

 

下面我们通过python语言,来对如上的二个接口进行实战的操作,切记parkinside的接口是在登录之后才可以操作的业务,未登录操作该业务,返回502无效的

token,见实现的代码:

python接口测试之mock(九)
#!/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)
python接口测试之mock(九)

 

分类:

技术点:

相关文章: