Skip to content

Instantly share code, notes, and snippets.

@cadu-leite
Created November 3, 2022 18:29
Show Gist options
  • Save cadu-leite/f7fd2ecefa8e25a9dc8fd2c5a6f64bf0 to your computer and use it in GitHub Desktop.
Save cadu-leite/f7fd2ecefa8e25a9dc8fd2c5a6f64bf0 to your computer and use it in GitHub Desktop.
Python XML Etree MOCKs
import unittest
import xml
from unittest.mock import Mock, patch
import modulo1
from modulo1 import get_tag_content
class TestMockXML(unittest.TestCase):
@patch('modulo1.ElTree')
def teste(self, MockElTree):
class MockNode:
def __init__(self, text: str):
self.text=text
mock_node_1 = MockNode('sou node 1 ')
mock_node_2 = MockNode('sou node 2 ')
MockElTree.parse.return_value.getroot.return_value.findall.return_value = [mock_node_1, mock_node_2]
tag_content = get_tag_content('')
# Assertions
MockElTree.parse.assert_called_once()
MockElTree.parse.return_value.getroot.return_value.findall.assert_called_once()
self.assertEqual(len(tag_content), 2)
@patch('modulo1.ElTree')
def teste2(self, MockElTree):
'''Teste com mock.
Args:
MockElTree (_type_): _description_
'''
MockElement = Mock(spec=MockElTree.Element)
mock_node_2 = MockElement('nrInsc')
mock_node_1 = MockElement('nrInsc')
mock_node_1.text = ''
mock_node_2.text = 'alguma coisa'
MockElTree.parse.return_value.getroot.return_value.findall.return_value = [mock_node_1, mock_node_2]
tag_content = get_tag_content('')
MockElTree.parse.assert_called_once()
MockElTree.parse.return_value.getroot.return_value.findall.assert_called_once()
self.assertEqual(len(tag_content), 2)
def teste3(self):
'''Teste com mock.
Args:
MockElTree (_type_): _description_
'''
with patch('modulo1.ElTree') as MockElTree:
MockElement = Mock(spec=MockElTree.Element)
mock_node_2 = MockElement('nrInsc')
mock_node_1 = MockElement('nrInsc')
mock_node_1.text = ''
mock_node_2.text = 'alguma coisa'
MockElTree.parse.return_value.getroot.return_value.findall.return_value = [mock_node_1, mock_node_2]
tag_content = get_tag_content('')
MockElTree.parse.has_called_once()
MockElTree.parse.return_value.getroot.has_called_once()
MockElTree.parse.return_value.getroot.return_value.findall.assert_called_once()
self.assertEqual(len(tag_content), 2)
def teste_diff(self):
'''Teste com mock.
'''
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment