Python mock 修补另一个函数调用的函数

2022-10-18Python开发问题
5

本文介绍了Python mock 修补另一个函数调用的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

def f1():
    return 10, True

def f2():
    num, stat = f1()
    return 2*num, stat

如何使用 python 的模拟库修补 f1() 并返回自定义结果以便我可以测试 f2()?

How do I use python's mock library to patch f1() and return a custom result so I could test f2()?

我的测试有问题吗?这似乎不起作用,所有测试都因 AssertionError 而失败

Edited: Is there something wrong with my test? This doesn't seem to be working, all the tests failed with AssertionError

from foo.bar import f2
from mock import patch

class MyTest(TestCase):

    def test_f2_1(self):
        with patch('project.module.f1') as some_func:
            some_func.return_value = (20, False)
            num, stat = f2()
            self.assertEqual((num, stat), (40, False))

   @patch('project.module.f1')
   def test_f2_2(self, some_func):
       some_func.return_value = (20, False)
       num, stat = f2()
       self.assertEqual((num, stat), (40, False))

推荐答案

第一个例子表明 f1() 和 f2() 定义在同一个模块中.因此,以下应该有效:

First example suggests that f1() and f2() defined in the same module. Hence the following should work:

from foo.bar import f2
from mock import patch

class MyTest(TestCase):

    @patch('foo.bar.f1')
    def test_f2_2(self, some_func):
        some_func.return_value = (20, False)
        num, stat = f2()
        self.assertEqual((num, stat), (40, False))

补丁与导入相同:@patch('foo.bar.f1')

这是一个很好的答案:

http://bhfsteve.blogspot.nl/2012/06/patching-tip-using-mocks-in-python-unit.html

这篇关于Python mock 修补另一个函数调用的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

pandas 有从特定日期开始的按月分组的方式吗?
Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)...
2024-08-22 Python开发问题
10

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10