主要实现语法有patch, patch.object, Mock()。

下面的测试太赤裸裸了,只是为了熟悉语法。

import unittest
from unittest.mock import patch, Mock

def multiply(x, y):
    return x * y

class Calculator:
    def add(self, a, b):
        return a + b

class TestMock(unittest.TestCase):
    def setUp(self):
        self.calcu = Calculator()
        self.multiply = multiply

    @patch('__main__.multiply')
    def test_patch_multiply(self, mock_multiply):
        mock_multiply.return_value = 34
        self.assertEqual(multiply(4, 5), 34)

    @patch.object(Calculator, 'add')
    def test_patch_add(self, mock_add):
        mock_add.return_value = 55
        self.assertEqual(self.calcu.add(4, 6), 55)

    def test_mock_multiply(self):
        mock_multiply = Mock(return_value=35)
        self.multiply = mock_multiply
        self.assertEqual(self.multiply(4, 5), 35)

    def test_mock_add(self):
        mock_add = Mock(return_value=99)
        self.calcu.add = mock_add
        self.assertEqual(self.calcu.add(4, 6), 99)

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

最适合mock测试,是网上那个例子,测试上一层功能,将其下一层mock掉。

client.py

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

import requests

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

def visit_ustack():
    return send_request('http://www.ustack.com')

tests.py

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

import unittest

import mock

import client

class TestClient(unittest.TestCase):

    def test_success_request(self):
        success_send = mock.Mock(return_value=')
        client.send_request = success_send
        self.assertEqual(client.visit_ustack(), ')

    def test_fail_request(self):
        fail_send = mock.Mock(return_value=')
        client.send_request = fail_send
        self.assertEqual(client.visit_ustack(), ')

python的mock功能,感觉入门了~~~的更多相关文章

  1. [转]Nginx基本功能极速入门

    原文链接:Nginx基本功能极速入门 | 叉叉哥的BLOG 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 1.静态HTTP服务器 ...

  2. 使用Python的Mock库进行PySpark单元测试

    测试是软件开发中的基础工作,它经常被数据开发者忽视,但是它很重要.在本文中会展示如何使用Python的uniittest.mock库对一段PySpark代码进行测试.笔者会从数据科学家的视角来进行描述 ...

  3. Python 的mock模拟测试介绍

    如何不靠耐心测试 可能我们正在写一个社交软件并且想测试一下"发布到Facebook的功能",但是我们不希望每次运行测试集的时候都发布到Facebook上. Python的unitt ...

  4. 【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程

    点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加 ...

  5. python之mock模块基本使用

    mock简介 mock原来是python的第三方库 python3以后mock模块已经整合到了unittest测试框架中,不用再单独安装 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个 ...

  6. 初学Python之爬虫的简单入门

    初学Python之爬虫的简单入门 一.什么是爬虫? 1.简单介绍爬虫   爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等. 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的 ...

  7. Python爬虫 小白[3天]入门笔记

    笔记来源 Day-0 1.如果你还不了解Python的基础语法,可以移步|>>>Python 基础 小白 [7天] 入门笔记<<<|或自行学习. 简介 1.什么是爬 ...

  8. Python函数式编程:从入门到走火入魔

    一行代码显示"爱心" >>> print]+(y*-)**-(x**(y*<= ,)]),-,-)]) Python函数式编程:从入门到走火入魔 # @fi ...

  9. 《Python黑客编程之极速入门》正式开课

    玄魂 玄魂工作室 今天 之前开启了一个<Python黑客编程>的系列,后来中断了,内容当时设置的比较宽,不太适合入门.现在将其拆分成两个系列<Python黑客编程之极速入门>和 ...

随机推荐

  1. idea导入eclipse中的maven项目

    1.  删除项目当中除src和pom.xml文件之外的文件 2.  打开idea,选择file – new – project from existing sources 3.  选择项目路径,然后n ...

  2. Python学习---------登陆系统代码实现

    题目要求: 一.编写登陆入口 1.输入用户名密码 2.认证成功后显示欢迎的信息 3.输错三次后锁定 Readme: 1.本次实现了登陆系统,若锁定就输出为锁定用户(锁定信息保存在user_lock.t ...

  3. FFT自看

    https://www.cnblogs.com/RabbitHu/p/FFT.html  先去看这个... 我觉得代码还是https://blog.csdn.net/WADuan2/article/d ...

  4. Gym - 101522H Hit!

    H. Hit! time limit per test 1.0 s memory limit per test 256 MB input standard input output standard ...

  5. CF888G Xor-MST 解题报告

    CF888G Xor-MST 题意翻译 给定一个\(n\)个节点的完全图,每个节点有个编号\(a_i\),节点\(i\)和节点\(j\)之间边的权值为\(a_i\ xor\ a_j\),求该图的最小生 ...

  6. 【bzoj1030】 JSOI2007—文本生成器

    http://www.lydsy.com/JudgeOnline/problem.php?id=1030 (题目链接) 题意 给出$n$个单词,问有多少个长度为$m$的文本中至少包含一个单词. Sol ...

  7. 01-go语言开始-HelloWorld

    以输出HelloWorld为目标 Go的发展史 Go语言诞生(2007年的谷歌)的背景是由于软件开发的新挑战: 多核硬件架构 超大规模分布式计算集群 Web模式导致的前所未有的开发规模和更新速度 Go ...

  8. Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP

    Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上次我分享过Spring传统的A ...

  9. C语言复习---比赛问题

    一:比赛问题 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单. ...

  10. IDEA启动Tomcat报错1099 is already in use

    IDEA中启动Tomcat报错,Error running Tomcat7.0.52: Address localhost:1099 is already in use 或者是 java.rmi.se ...