码迷,mamicode.com
首页 > 编程语言 > 详细

Mock实现模拟python的对象

时间:2019-03-20 00:52:11      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:rbo   port   单元测试   环境   sel   pip   大量   assert   测试   

    Mock库的应用

Mock在Python3.3之前是第三方库,需要安装 pip install Mock ;导入 import mock

Mock在Python3.3之后是Python标准库,导入方式为 from unittest import mock

Mock能够让我们模拟单元测试中不可用或繁重的资源;还可以模拟Python对象的行为

Mock 使用的原因:

  一、环境由于客观原因由于无法搭建

  二、搭建服务器的值需要大量工作才行

 

实现代码如下:

import requests
import shutil

def send_Mock(url):
r = requests.get(url)
return r.status_code

def visit_Mock():
return send_Mock("http://www.Teacherketang.com/")

class Remove(object):
def rmdir(self,path="E:/"):
re = shutil.rmtree(path)
if re == None:
return "seccess"
else:
return "fail"

def exists_get_rmdir(self):
return self.rmdir()


调用模块
from Mock_Test import Client_Mock
import unittest
from unittest import mock


class Mock_Test(unittest.TestCase):

def setUp(self):
self.r = Client_Mock.Remove()

def test_success_mock(self):
success_mock = mock.Mock(return_value="200")
Client_Mock.send_Mock = success_mock
self.assertEqual(Client_Mock.visit_Mock(),"200")

def test_fail_mock(self):
fail_mock = mock.Mock(return_value="404")
Client_Mock.send_Mock = fail_mock
self.assertEqual(Client_Mock.visit_Mock(), "404")

def test_remove_success(self):
remove_success = mock.Mock(return_value="success")
self.r.rmdir = remove_success
self.assertEqual(self.r.exists_get_rmdir(),remove_success())

def test_remove_fail(self):
remove_fail = mock.Mock(return_value="fail")
self.r.rmdir = remove_fail
self.assertEqual(self.r.exists_get_rmdir(),remove_fail())

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

Mock实现模拟python的对象

标签:rbo   port   单元测试   环境   sel   pip   大量   assert   测试   

原文地址:https://www.cnblogs.com/Teachertao/p/10562201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!