python接口测试之mock(八)

在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证在客户端开发的时候,api在server端已经开发完成,专门等着前端来调用,理想的情况是前端在开发的时候,已经有人写好了接口,直接调用就可以了,但是这仅仅是理想的情况,很多时候,现实总是比理想多一层思考和磨难,如果在前端开发的时候,提供api的同学没有提供,那么怎么办?等待还是自己先开发,等待肯定是愚蠢的做法,那么自己开发怎么来解决api提供数据的这个问题,那么使用mock就可以很好的解决,什么是mock?mock简单的理解就是开发在开发的过程中,需要依赖一部分的接口,但是对方没有提供或者环境等等情况,总之是没有,那么开发使用mock server自己来mock数据,方便自己正常的进行开发和对编写的功能进行自测。在https://github.com/dreamhead/moco地址中可以下载到moco-runner-0.11.0-standalone.jar,下载下来就是一个jar,在该地址中,作者对这部分有详细的说明和启动mock server方法,这里不在重复的再次说明。下来我们

简单的编写一个登录的,见编写的login.json字符串:

[
  {
    "request":
    {
      "method":"post",
      "uri":"/login",
      "json":
      {
        "username":"admin",
        "password":"admin",
        "roleID":22
      }
    },
    "response":
    {
      "json":
      {
        "username":"wuya",
        "userID":22,
        "token":"asdgfhh32456asfgrsfss"
      }
    }
  }
]

在运行命令前,最好让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

OK,学习到这里,我们使用python编写一个接口测试用例,来验证换这个登录的接口和获取它的token,见实现的代码:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

import  unittest
import  requests

class MockLoginTest(unittest.TestCase):
   def setUp(self):
      self.url='http://localhost:12306'

   def tearDown(self):
      pass

   def getUrl(self,path):
      return self.url+path

   def getToken(self):
      '''获取token'''
      data={
         "username":"admin",
         "password":"admin",
         "roleID":22
      }
      r=requests.post(self.getUrl('/login'),json=data)
      return r.json()['token']

   def test_login(self):
      '''验证登录的接口'''
      data={
         "username":"admin",
         "password":"admin",
         "roleID":22
      }
      r=requests.post(self.getUrl('/login'),json=data)
      self.assertEqual(r.status_code,200)
      self.assertEqual(r.json()['username'],'wuya')

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

OK,在上面的python代码中,实现了对登录接口的验证和获取了它的token,当然关于mock server的详细的使用,本公众号会持续更新的,谢谢您的阅读和关注!祝安!

本文分享自微信公众号 - Python自动化测试(wuya-python)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-16

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

命名法 的 简洁归纳表

11040
来自专栏Petrichor的专栏

requirements.txt 介绍 & 快捷生成

  requirements.txt 文件 里面记录了当前程序的所有依赖包及其精确版本号。

16010
来自专栏Petrichor的专栏

忘记密码时,如何查看之前Chrome浏览器保存的密码

80920
来自专栏Petrichor的专栏

shutdown & reboot & last

23630
来自专栏Petrichor的专栏

显示器 设置选项 解析

12110
来自专栏Petrichor的专栏

Dataset 列表:机器学习研究

In computer vision, face images have been used extensively to develop face recog...

86410
来自专栏Petrichor的专栏

像素、分辨率 区别 & 介绍

举个例子,比如一张图片由100×100个像点组成,那么这张图片的像素数就是1万。但是,如果这张图片边长为1英寸,那么其分辨率就是100点/英寸,也就是100dp...

22720
来自专栏Petrichor的专栏

主机:各线介绍 & 问题速查表

  在独立组装过八九台主机,遇坑无数后,我写下了《如何自己组装电脑(从配件到整机)来省下一大笔钱》以及《组装台式机遇坑总结》这两篇技术博客。

11910
来自专栏Petrichor的专栏

个人理解:import scipy语句 为什么不能导入 scipy.misc.imsave 模块

1.4K30
来自专栏逆向技术

win32程序之窗口程序,以及消息机制

  通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标点击会...

14130

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励