Python接口测试之moco

在现在的软件开发过程中,特别是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

时间: 2024-08-29 14:32:53

Python接口测试之moco的相关文章

python接口测试之token&session的处理(十四)

下面我们就来使用python语言来进行实现,在这里我们使用第三方的库requests,需要单独的安装下,安装的命令是: pip  install -U requests 见安装的截图: 安装成功后,如果可以在正常的导入,说明安装OK 安装好requests好后,我们就可以开始了,关于requests有不清楚的,可以看Python接口测试之requests(七),这里我们直接来进行实战, 我们再来进行回顾下我们需要做的事情,我们需要做的就是登录成功后,获取token,后面的接口都需要这个参数,所以

python接口测试之urllib2的应用(十五)

作者 无涯 在接口测试中或者说在网络爬虫中,urllib2库是必须要掌握的一个库,当然还有优秀的requests库,今天重点来说urllib2库在接口测试中的应用. urllib2定义了很多的函数和类,这些函数和类能够帮助我们在复杂情况下获取URLS的内容.这些情况包含了对headers的添加,cookie的处理,代理, 超时,鉴权等的处理.如果想详细的了解urllib2库,建议到官方查看,官方地址:https://docs.python.org/2/library/urllib2.html.查

python接口测试之401错误的分析和解决(十六)

作者 无涯 在接口的测试中,经常会遇到客户端向服务端发送一个请求,服务端返回401的错误,那么今天本文章就来说明在接口测试中如何分析以及解决该问题. 我们知道在HTTP返回的状态码中,401错误表示的是被请求的页面需要用户名和密码.401的错误详细的可以描述为:客户端发送请求抖到服务端, 页面需要验证服务端会返回401的错误,见如下的错误信息: 401 UNAUTHORIZED Headers Content-Type: application/jsonWWW-Authenticate: Bas

Python接口测试之对MySQL/unittest框架/Requests 的操作

单元测试支持测试自动化. 共享的安装程序和关闭代码测试. 聚合成集合,测试和报告框架从测试的独立性.单元测试模块提供可以很容易地支持这些素质的一组测试的类.关于unittest 测试框架建议可以到官方查看详细的说明以及演示的实例.unittest各个模块的关系为: #!/usr/bin/env python #coding:utf-8 import unittest class TestDiv(unittest.TestCase): def setUp(self): pass def tearD

python接口测试之序列化与反序列化(四)

作者 无涯 在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象. 在python的标准库中,专门提供了json库与pickle库来处理这部分. 先来学习json的库,导入json库很简单,直接import json,下面通过具体的实例来说明json库对序列化与反序列化的使用.json库的主要方法为: #!/usr/bin/env python#coding:utf-8import  jsonp

python接口测试之json模块的使用

json.dumps() json.loads() json.dump json.load 一.json.dumps() 将python字典类型转换成json对象 import json # Python 字典类型转换为 JSON 对象 data = { 'no' : 1, 'name' : 'Runoob', 'url' : 'http://www.runoob.com' } json_str = json.dumps(data) print ("Python 原始数据:", rep

python接口测试之日志功能

之前在简书中看了一篇关于日志功能的文档,供大家参考:https://www.jianshu.com/p/62f7b49b41e7 Python通过logging模块提供日志功能,所以直接导入即可 import logging 1.定义日志收集器,指定收集器的名称,返回logging对象 case_logger = logging.getLogger('case') 2.指定日志收集器的日志等级,NOTEST(0) DEBUG(10) INFO(20) WARNING(30) ERROR(40)

python接口测试之requests库(一)

一.requests库的安装 requests库作为第三方库,需要安装 cmd模式下,运行pip install requests 二.在学习如何发送请求之前,我们先来了解一下requests库,查看一下他有什么方法 print dir(requests) 三.模拟发送get请求 1.发送不带参数的get请求 r = requests.get('https://api.github.com/events') 返回的是一个response对象,该对象中包含的内容,通过dir(r) 2.发送带参数的

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo