Created
November 3, 2022 18:29
-
-
Save cadu-leite/f7fd2ecefa8e25a9dc8fd2c5a6f64bf0 to your computer and use it in GitHub Desktop.
Python XML Etree MOCKs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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