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)

原文发布于微信公众号 - Python自动化测试(wuya-python)

原文发表时间:2017-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信技能树

R包终极解决方案

写在前面: 在如何通过Google来使用ggplot2可视化这篇文章中,我们曾经介绍过R语言在生物信息学中的重要性。 这篇文章也激发了很多小伙伴学习的热情。学习...

78070
来自专栏张戈的专栏

安装完Win7之后推荐做的一些设置

前言:不知道写什么,就总结一下我个人安装完成 windows7 之后要做的一些设置吧!以下全文均为个人回忆总结,文章也很冗长,难免有纰漏或者不符合你个人习惯的内...

1.2K140
来自专栏大魏分享(微信公众号:david-share)

容器超融合的实现&持久存储的动态分配 : Openshift3.9学习系列第六终结篇

干货巨献:Openshift3.9的网络管理大全.加长篇---Openshift3.9学习系列第二篇

30130
来自专栏杨建荣的学习笔记

关于switchover的流程和补充(r9笔记第4天)

对于Oracle Data Guard中的Switchover一般是计划内的操作,自己其实也处理了不少的故障,也算是轻门熟路。复杂的事情简单做,简单的事情重复做...

31050
来自专栏黑泽君的专栏

day70_淘淘商城项目_03_作业

请求URL: /item/update 参数: 表单数据(TbItem) 返回值:Taotaoresult

15720
来自专栏用户2442861的专栏

python项目打包部署

作者:张博 链接:https://www.zhihu.com/question/38081354/answer/81829426 来源:知乎 著作权归作者...

5.1K10
来自专栏前端开发

手把手教你搭建一个属于自己的网站

网站也可以理解为web应用程序,只不过无需用户下载,只要有网络,随时随地都能访问。

2.3K60
来自专栏知识分享

7-开发板接入小五物联实现远程控制(Air202模块+单片机)

https://www.cnblogs.com/yangfengwu/p/9337033.html

14420
来自专栏小白课代表

Autodesk 3DS MAX 2018安装教程

3D Studio Max,常简称为3d Max或3dsMAX,是Discreet公司开发的(后被Autodesk公司合并)基于PC系统的三维动画渲染和制作软件...

20130
来自专栏10km的专栏

sql2java:一个古老但稳定的轻量级的ORM工具的使用说明

大约在2011年,我刚开始接触java开发的时候 ,接触的第一个ORM工具就是sql2java. 官网地址:https://sourceforge.net/p...

29990

扫码关注云+社区

领取腾讯云代金券