zoukankan      html  css  js  c++  java
  • Mock实现模拟python的对象

        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)
  • 相关阅读:
    npm optionalDependencies 依赖处理
    grafana 8.0 新的报警机制
    cube.js prometheus 监控
    cube.js 新版本playground 特性
    data mesh & data lake & data fabric
    java 几个开源dataframe 的实现包
    archaius netflix 的配置管理工具框架
    dremio 文件夹数据分区
    dremio 17 发布了
    Linux系统挂载未分配硬盘空间
  • 原文地址:https://www.cnblogs.com/Teachertao/p/10562201.html
Copyright © 2011-2022 走看看