我是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()
我们如何消除依赖?
Node()
?abc
分配了X_PLATFORM
?如何将值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
我尝试写下单元测试。我无法检查失败和通过条件。我不确定它是否正确。
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类使用其他类。