热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Python接口测试之moco

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python接口测试之moco相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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‘],u20小时18分钟)
self.assertEqual(r.json()[Parking fee‘], u20$)

if __name__==__main__:
unittest.main(verbosity=2)

 





































推荐阅读
author-avatar
金健winner
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有