如何测试在具有nosetests的函数中调用函数

前端之家收集整理的这篇文章主要介绍了如何测试在具有nosetests的函数中调用函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为项目设置一些自动单元测试.我有一些功能,作为副作用偶尔会调用另一个功能.我想写一个单元测试,测试第二个函数调用,但我很难过.下面是伪代码示例:
def a(self):
    data = self.get()
    if len(data) > 3500:
        self.b()

    # Bunch of other magic,which is easy to test.

def b(self):
    serial.write("\x00\x01\x02")

我如何测试b() – 被调用

解决方法

您可以使用 mock模块模拟函数b并检查它是否被调用.这是一个例子:
import unittest
from mock import patch


def a(n):
    if n > 10:
        b()

def b():
    print "test"


class MyTestCase(unittest.TestCase):
    @patch('__main__.b')
    def test_b_called(self,mock):
        a(11)
        self.assertTrue(mock.called)

    @patch('__main__.b')
    def test_b_not_called(self,mock):
        a(10)
        self.assertFalse(mock.called)

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

另见:

> Assert that a method was called in a Python unit test
> Mocking a class: Mock() or patch()?

希望有所帮助.

原文链接:https://www.f2er.com/python/186628.html

猜你在找的Python相关文章