ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

有关于测试unittest 和 mock

2021-11-29 18:33:43  阅读:151  来源: 互联网

标签:count return unittest add 测试 multiply self mock


mock 模拟 是辅助单元测试的一个模块 使用mock可以替换掉一部分依赖函数

例子:

 def test_add(self):
        count = Count()
        count.add = mock.Mock(return_value=13)
        result = count.add(8,5)
        self.assertEqual(result,13)

此处应用mock代替了Count中的add方法,使用return_value设定了返回值为13
断言成功

 

例子2:

def test_add(self):
        count = Count()
        count.add = mock.Mock(return_value=13, side_effect=count.add)
        result = count.add(8, 8)
        print(result)
        count.add.assert_called_with(8, 8)
        self.assertEqual(result, 16)

此处使用mock时增加了side_effect 参数,side_effect参数会替代return_value 所拟定的返回值,此时将调用count.add 而非return_value

 

例子3:

    @patch("function.multiply")
    def test_add_and_multiply2(self, mock_multiply):
        x = 3
        y = 5
        mock_multiply.return_value = 15
        addition, multiple = function.add_and_multiply(x, y)
        mock_multiply.assert_called_once_with(3, 5)

        self.assertEqual(8, addition)
        self.assertEqual(15, multiple)

使用patch()装饰器 在测试时将制定的对象替换为一个模拟,并且在结束时还原
这里模拟function.py文件中multiply()函数

def test_add_and_multiply2(self, mock_multiply):
此处将mock的multiply()函数重命名为mock_multiply
测试add_and_multiply方法 但是 multiply 存在问题 则使用 mock_multiply 代替并设置预设值

 

标签:count,return,unittest,add,测试,multiply,self,mock
来源: https://www.cnblogs.com/IVWT/p/15620665.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有