Python实践98-mock模拟接口返回

mock接口

  • 很多时候开发人员和其他系统联调时,如果关联系统还没有开发完成,这时只能使用mock来模拟关联系统的返回
  • 自动化测试也常常遇到同样的问题,为了验证关联系统不同的返回对被测对象的影响,需要mock关联系统的返回

一个例子

  • 被测对象从关联接口获得用户信息
  • 在关联接口开发完成之前,只能使用mock来模拟关联接口的返回,完成对被测对象的测试
import unittest
import requests
from unittest import TestCase
from unittest.mock import patch


class User(object):
    def get_user_info(uid):
        resp = requests.get("http://api.server.com/user/{0}".format(uid))
        return resp.json()


class TestUserInfo(TestCase):
    @patch('__main__.User')
    def test_user_name(self, MockUser):
        user = MockUser()
        user.get_user_info.return_value = {
            "user_id": 1,
            "name": "python",
            "age": 20
        }
        resp = user.get_user_info(1)
        self.assertEqual(resp.get("name"), "python")
        self.assertEqual(resp.get("age"), 20)


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

代码地址

本系列文章和代码已经作为项目归档到github,仓库地址:jumper2014/PyCodeComplete。大家觉得有帮助就请在github上star一下,你的支持是我更新的动力。什么?你没有github账号?学习Python怎么可以没有github账号呢,快去注册一个啦!