如何在python中模拟依赖

时间:2015-09-19 20:31:38

标签: python unit-testing mocking

我是python单元测试框架的新手,并且在模拟依赖方面存在很多困惑。

我正在尝试为类的下面的成员函数(check_something())编写单元测试:

class Validations:    
    def check_something(self):
        abc = os.environ['PLATFORM']
        xyz = Node()
        no_of_nodes = len(xyz.some_type_var)
        if abc != "X_PLATFORM" or no_of_nodes != 1:
            raise someException()

我们如何消除依赖?

  1. 需要模拟Node()
  2. 我们如何确保abc分配了X_PLATFORM
  3. 如何将值1分配给变量no_of_nodes?而这又是从Node()对象派生的。

    class Node(object):
        def __init__(self):
            self.nodes = DEF()
            self.some_type_var = someclass().getType()
            self.localnode = os.environ['HOSTNAME']
            self.peertype = self.get_peer_type()
    
        def get_peer_type(self):
            return node
    
  4. 我尝试写下单元测试。我无法检查失败和通过条件。我不确定它是否正确。

    class TestValidation(unittest.TestCase):
    
        @mock.patch.object(Node, "get_peer_type")
        @mock.patch('somefile.Node', spec=True)
        def test_1(self, mock_object1, mock_object2):
            os.environ['PLATFORM'] = 'X_PLATFORM'
            obj = Validations()
            self.assertRaises(someException, obj.check_something)
    

    验证类使用Node()类对象,而Node类使用其他类。

    1. 如何根据情况确定是否引发异常?

0 个答案:

没有答案