我是python單元測試框架的新手,在模擬依賴關係時遇到了很多混亂。如何在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()
類對象和節點類使用一些其他類。
- 如何確保異常是否被引發取決於條件?