如何在另一个类中创建模拟类的实例

ddd

A类具有另一个B类的属性。

Class A():
   def __init__(self, b):
      self.b = b

   def get_b_secret(self, job_id):
      x, y = self.b.get_secret(job_id)
      return x, y

Class B():
   def __init__(self, key, url):
      self.key = key
      self.url = url
   def get_secret(job_id):
      # logic to get secret
      # return a tuple
      return x, y

我想get_b_secret通过整体模拟B类来为A类的方法编写单元测试

@patch('b.B')
def test_get_b_secret(self, mock_b):
    mock_b.b.get_secret.return_value = ('x', 'y')
    obj = A(mock_b) 
    expected = ('x','y')
    self.assertEqual(obj.get_b_secret('001'), expected)

我意识到通过模拟类B,我实际上并没有将B实例化为A实例内部的实例。这就是为什么当我调试测试,Aget_b_secret返回一个MagicMock对象来代替。

我发现这篇关于嘲笑对象的文章但是在该示例中,外部类的init没有内部Class对象作为参数。所以有点不同。最好的方法是什么?

乔治

如果您的示例代码是正确的,则不需要模拟B类。您只需在初始化它时将带有get_secret函数的模拟传递给A类。

mock = MagicMock()    

mock.return_value.get_secret.return_value = ('x', 'y')
obj = A(mock)
....

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在实例化时在新类中创建另一个类的实例?

来自分类Dev

如何在另一个类中创建导入的类的实例

来自分类Dev

PHP OOP。如何获取类的常量__METHOD__的值,如何在另一个类中创建另一个类的实例?

来自分类Dev

如何在一个类中声明另一个类的实例

来自分类Dev

如何在python中使用另一个实例的类名创建实例?

来自分类Dev

在另一个类中创建该类的实例

来自分类Dev

如何在javascript中的另一个类中实例化类?

来自分类Dev

创建为实例后,一个类如何从另一个类继承

来自分类Dev

如何创建一个存在于另一个类中的类的新实例?

来自分类Dev

Java:如何在另一个类中使用在一个类中实例化的对象?

来自分类Dev

如何在另一个模型类中实例化一个模型类?

来自分类Dev

如何在Java中使用一个方法在一个类中创建另一个实例?

来自分类Dev

C#如何在一个函数中创建类的实例,然后在另一个函数中使用相同的实例

来自分类Dev

如何创建将知道其实例在另一个类的矩阵中的方法

来自分类Dev

如何跟踪一个类中另一个类的实例?

来自分类Dev

如何在一个类中创建方法,在另一个类中操作变量?

来自分类Dev

如何在一个类中创建方法,在另一个类中操作变量?

来自分类Dev

如何在不创建实例的情况下访问另一个类内声明的类?

来自分类Dev

如何在另一个类中访问此实例方法

来自分类Dev

java - 如何在另一个类中创建一个类的对象,反之亦然?

来自分类Dev

如何基于另一个模型的实例在Django中创建模型,但已过滤

来自分类Dev

如何在Ruby中从另一个类中调用一个实例方法?

来自分类Dev

是否只允许Java中的另一个类创建特定类的实例?

来自分类Dev

引用从另一个类模块在main中创建的类的实例

来自分类Dev

如何通过在Javascript另一个类的实例访问另一个类中的方法

来自分类Dev

如何在另一个生成字节码类中使用匿名类实例

来自分类Dev

如何在另一个类中调用一个类的main()方法?

来自分类Dev

如何在另一个类的红宝石中隐藏一个类

来自分类Dev

我如何在不创建另一个bean id的情况下访问类的相同实例

Related 相关文章

  1. 1

    如何在实例化时在新类中创建另一个类的实例?

  2. 2

    如何在另一个类中创建导入的类的实例

  3. 3

    PHP OOP。如何获取类的常量__METHOD__的值,如何在另一个类中创建另一个类的实例?

  4. 4

    如何在一个类中声明另一个类的实例

  5. 5

    如何在python中使用另一个实例的类名创建实例?

  6. 6

    在另一个类中创建该类的实例

  7. 7

    如何在javascript中的另一个类中实例化类?

  8. 8

    创建为实例后,一个类如何从另一个类继承

  9. 9

    如何创建一个存在于另一个类中的类的新实例?

  10. 10

    Java:如何在另一个类中使用在一个类中实例化的对象?

  11. 11

    如何在另一个模型类中实例化一个模型类?

  12. 12

    如何在Java中使用一个方法在一个类中创建另一个实例?

  13. 13

    C#如何在一个函数中创建类的实例,然后在另一个函数中使用相同的实例

  14. 14

    如何创建将知道其实例在另一个类的矩阵中的方法

  15. 15

    如何跟踪一个类中另一个类的实例?

  16. 16

    如何在一个类中创建方法,在另一个类中操作变量?

  17. 17

    如何在一个类中创建方法,在另一个类中操作变量?

  18. 18

    如何在不创建实例的情况下访问另一个类内声明的类?

  19. 19

    如何在另一个类中访问此实例方法

  20. 20

    java - 如何在另一个类中创建一个类的对象,反之亦然?

  21. 21

    如何基于另一个模型的实例在Django中创建模型,但已过滤

  22. 22

    如何在Ruby中从另一个类中调用一个实例方法?

  23. 23

    是否只允许Java中的另一个类创建特定类的实例?

  24. 24

    引用从另一个类模块在main中创建的类的实例

  25. 25

    如何通过在Javascript另一个类的实例访问另一个类中的方法

  26. 26

    如何在另一个生成字节码类中使用匿名类实例

  27. 27

    如何在另一个类中调用一个类的main()方法?

  28. 28

    如何在另一个类的红宝石中隐藏一个类

  29. 29

    我如何在不创建另一个bean id的情况下访问类的相同实例

热门标签

归档