在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证

在客户端开发的时候,api在server端已经开发完成,专门等着前端来调用,理想的情况是前端在开发的时候,已经有人写

好了接口,直接调用就可以了,但是这仅仅是理想的情况,很多时候,现实总是比理想多一层思考和磨难,如果在前端开发

的时候,提供api的同学没有提供,那么怎么办?等待还是自己先开发,等待肯定是愚蠢的做法,那么自己开发怎么来解决

api提供数据的这个问题,那么使用mock就可以很好的解决,什么是mock?mock简单的理解就是开发在开发的过程中,

需要依赖一部分的接口,但是对方没有提供或者环境等等情况,总之是没有,那么开发使用mock server自己来mock

数据,方便自己正常的进行开发和对编写的功能进行自测。

在https://github.com/dreamhead/moco地址中可以下载到moco-runner-0.12.0-standalone.jar,下载下来

就是一个jar,在该地址中,作者对这部分有详细的说明和启动mock server方法,这里不在重复的再次说明。下来我们

简单的编写一个登录的,见编写的login.json字符串,一个是登录请求,一个是根据车牌查询停车费的请求:

[  {    "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"    }  }]

在UI或者接口的自动化测试中,我们知道在TDD的模式中,对数据进行分离,这样也是为了维护的方便,这样的目的是为了后期自动化测试用例的扩展性,和它的易维护性。

login_response.json文件的内容:

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

parkinside.json文件的内容:

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

在运行命令前,最好让mock server与编写的login.json文件是在同一个目录下,见执行的命令:

java -jar  moco-runner-0.10.0-standalone.jar http -p 12306 -c login.json

在如上的命令中,java -jar  moco-runner-0.10.0-standalone.jar是启动jar,没什么可说的,http表示进行的是http协议,

-p后面跟的是端口号,这里端口号指的是12306,-c后面跟编写的json文件,这里是login.json,见执行如上的命令后出现的

信息(切记无任何的错误信息表示OK,如果有错误,慢慢的进行检查错误),见截图:

OK,下来我们使用postman来验证下,我们mock的登录接口是不是OK的,见postman中填写的信息,见截图:

header为:

  • Content-Length →63
  • Content-Type →application/json

下面我们通过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)

转载于:https://www.cnblogs.com/xiaohuhu/p/9556376.html

Python接口测试之moco相关推荐

  1. Python接口测试之requests

    1.简介 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时 经常会用到,Requests是Python语言的第三方的库,专门用于发送HTTP请求 2.前提 ...

  2. python接口测试之新手篇

    嗨,大家好,我是小白,好久没写博客了,最近公司搞什么python的接口测试,心里一阵狂喜,在公司上百个接口里拿出一个主要接口一顿乱搞,好在搞通了 但是在这过程中也碰到了好多的问题,决定将问题分享出来能 ...

  3. Python 接口测试之处理转义字符的参数和编码问题

    目录 引言 处理入参有转义字符的接口 编码处理 接口请求方式 提取报文中参数 附录 引言 笔者,在非常繁忙的工作之余,决定抽时间记录一下在测试接口时所遇到的问题,以便日后参考,也可以提供给那些正在学习 ...

  4. python接口测试之路get、post、json请求处理

    基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称 接口功能 接口地址 支持格式 json/xml 请求方式 请求示例 请求参数(是否必填.数据类型.传递参数 ...

  5. python接口测试之requests详解_Python接口测试-requests库

    一.requests库 Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量 ...

  6. python接口测试之request请求二(传递参数)

    1.在请求中加参数时,一般是在url后面接?,然后传入key/value对,在requests中,一般使用params关键字参数的方式,以dict的形式传递url参数 #-*- coding:utf- ...

  7. 接口测试之主流协议测试合集(python版)

    http://t.csdn.cn/U4WHz 接口测试之主流协议测试合集(python版) 01 TCP/IP四层模型&OSI七层模型 02 IP协议 03 TCP协议 04 UDP协议 05 ...

  8. jemeter python接口自动化测试平台_python接口自动化测试之request

    之前小编写过Rest-assuert接口测试框架,它是基于java的,那么怎么轻轻松松玩转python接口自动化测试呢?今天小编就写写如何使用python Request进行接口自动测试. 学习任何一 ...

  9. pytest接口测试之fixture传参数request

    本文主要介绍了pytest接口测试之fixture传参数request的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前言 有的测试用例,需要依赖于某些特定的 ...

最新文章

  1. 2个点马氏距离计算实例_数据分析基础:距离度量方式(欧式距离、马氏距离、曼哈顿距离)...
  2. /src/log4j.xml
  3. 经典C语言程序100例之七
  4. 04- 移动APP功能测试要点以及具体业务流程测试
  5. Unity教程:如何使用枚举来帮助简化游戏开发
  6. 【Lucene4.8教程之中的一个】使用Lucene4.8进行索引及搜索的基本操作
  7. Ubicomp2018年论文列表
  8. 微信小程序富文本组件mp-html
  9. 用MDT 2012为企业部署windows 7(四)--创建Deploymentshare共享以及介绍一些选项的具体作用...
  10. 数组中只出现一次的数字(python解法)
  11. 论文图标visio等字体对应
  12. python实现指数增长
  13. 【100%通过率】华为OD机试真题 Java 实现【处理器问题/ 高性能AI处理器】【2022.11 Q4 新题】
  14. 从0-1的CTF比赛环境搭建过程
  15. C#中的特性,什么是特性.
  16. 【Nanopi2试用体验】开箱+VNC等
  17. 抖音python真的那么好吗_python看抖音用户画像,摩羯天蝎居然刷得最多?
  18. S5700的Eth-Trunk端口汇聚及Trunk删除
  19. [20170412]bbed隐藏数据记录.txt
  20. LambdaQueryWrapper中大于等于的方法

热门文章

  1. glog 设置日志级别_如何动态改变日志级别
  2. 深度学习模型创建dataset
  3. html文档支持代码高亮,为HTML中的代码添加语法高亮
  4. upper_bound 和lower_bound彻底搞懂
  5. 从零开始刷Leetcode——数组(746.747)
  6. 基于依存句法规则的篇章级情感分析demo
  7. Python ln_虚拟机中单机Spark (Python版)安装
  8. java 实体类返回大写_解决springboot bean中大写的字段返回变成小写的问题
  9. class中函数的this指向
  10. Linux system函数返回值