簡體   English   中英

python 單元測試:如何模擬對象的構造以返回模擬?

[英]python unittest: How to mock an object's construct to return a mock?

我有一個.py

class foo:
   def __init__(self, name):
      self.name=name
   def get_name(self):
      return self.name

和一個來電者 b.py

form a import foo

def get_foo():
   myfoo = foo("Alex")
   name = myfoo.get_name()
   return name

現在我想為 get_foo() 方法編寫單元,如何模擬 foo.get_name() 以返回我想要的值? 我的痛點是我無法向myfoo=foo("Alex")注入模擬

你可以用unittest.mock.patch模擬你的foo ,你只需要知道在哪里打補丁

import unittest
from unittest.mock import patch

from b import get_foo

class TestB(unittest.TestCase):

    @patch("b.foo")  # patch `foo` in `b` namespace since you do `from ... import`
    def test_get_foo(self, mock_foo):
        expected = "Bob"
        mock_foo.return_value.get_name.return_value = expected
        actual = get_foo()
        self.assertEqual(actual, expected)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM