You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
4.4 KiB
Python
136 lines
4.4 KiB
Python
"""
|
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
|
|
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
|
|
Unit tests for ly_test_tools._internal.pytest_plugin.case_id
|
|
"""
|
|
|
|
import unittest.mock as mock
|
|
|
|
import pytest
|
|
|
|
import ly_test_tools._internal.pytest_plugin.case_id as case_id
|
|
|
|
pytestmark = pytest.mark.SUITE_smoke
|
|
|
|
|
|
class TestCaseId(object):
|
|
|
|
def test_Configure_MockConfig_ValuesAdded(self):
|
|
mock_config = mock.MagicMock()
|
|
|
|
case_id.pytest_configure(mock_config)
|
|
|
|
mock_config.addinivalue_line.assert_called_once()
|
|
|
|
def test_AddOption_MockParser_OptionsAdded(self):
|
|
mock_parser = mock.MagicMock()
|
|
|
|
case_id.pytest_addoption(mock_parser)
|
|
|
|
mock_parser.addoption.assert_called_once()
|
|
|
|
def test_MakeReportImpl_MarkerSimpleItem_TestCaseIdAdded(self):
|
|
mock_report = mock.MagicMock()
|
|
mock_report.when = 'call'
|
|
mock_item = mock.MagicMock()
|
|
mock_marker = mock.MagicMock()
|
|
test_case = 123
|
|
test_case_list = [str(test_case)]
|
|
mock_marker.args = test_case_list
|
|
mock_item.get_marker.return_value = mock_marker
|
|
mock_xml = mock.MagicMock()
|
|
mock_item.config._xml = mock_xml
|
|
mock_node = mock.MagicMock()
|
|
mock_xml.node_reporter.return_value = mock_node
|
|
|
|
case_id._pytest_runtest_makereport_imp(mock_report, mock_item)
|
|
|
|
mock_node.add_property.assert_called_once_with('test_case_id', test_case)
|
|
|
|
def test_MakeReportImpl_ClosestMarkerSimpleItem_TestCaseIdAdded(self):
|
|
mock_report = mock.MagicMock()
|
|
mock_report.when = 'call'
|
|
mock_item = mock.MagicMock()
|
|
mock_marker = mock.MagicMock()
|
|
test_case = 123
|
|
test_case_list = [str(test_case)]
|
|
mock_marker.args = test_case_list
|
|
mock_item.get_marker.side_effect = AttributeError()
|
|
mock_item.get_closest_marker.return_value = mock_marker
|
|
mock_xml = mock.MagicMock()
|
|
mock_item.config._xml = mock_xml
|
|
mock_node = mock.MagicMock()
|
|
mock_xml.node_reporter.return_value = mock_node
|
|
|
|
case_id._pytest_runtest_makereport_imp(mock_report, mock_item)
|
|
|
|
mock_item.get_closest_marker.assert_called_once()
|
|
mock_node.add_property.assert_called_once_with('test_case_id', test_case)
|
|
|
|
@mock.patch('ly_test_tools._internal.pytest_plugin.case_id.log')
|
|
def test_MakeReportImpl_XmlReportError_WarningLogged(self, mock_logger):
|
|
mock_report = mock.MagicMock()
|
|
mock_report.when = 'call'
|
|
mock_item = mock.MagicMock()
|
|
mock_marker = mock.MagicMock()
|
|
test_case = '123'
|
|
test_case_list = [str(test_case)]
|
|
mock_marker.args = test_case_list
|
|
mock_item.get_marker.return_value = mock_marker
|
|
mock_item.config = ''
|
|
|
|
case_id._pytest_runtest_makereport_imp(mock_report, mock_item)
|
|
|
|
mock_logger.warning.assert_called_once()
|
|
|
|
def test_CollectionModifyItems_SingleTestCase_ItemsUpdated(self):
|
|
ids = [12, 34, 56]
|
|
id_to_filter = 34
|
|
items = []
|
|
deselected_items = []
|
|
for id in ids:
|
|
mock_item = mock.MagicMock()
|
|
mock_marker = mock.MagicMock()
|
|
mock_marker.args = [str(id)]
|
|
mock_item.get_marker.return_value = mock_marker
|
|
|
|
items.append(mock_item)
|
|
|
|
if id != id_to_filter:
|
|
deselected_items.append(mock_item)
|
|
|
|
mock_config = mock.MagicMock()
|
|
mock_config.option.test_case_ids = str(id_to_filter)
|
|
|
|
case_id.pytest_collection_modifyitems(items, mock_config)
|
|
|
|
assert len(items) == 1
|
|
assert items[0].get_marker().args[0] == str(id_to_filter)
|
|
mock_config.hook.pytest_deselected.assert_called_once_with(items=set(deselected_items))
|
|
|
|
def test_ParseTestCaseIds_ValidStringIds_IdsParsed(self):
|
|
ids = ['12', '34', '56']
|
|
|
|
expected = {12, 34, 56}
|
|
actual = case_id._parse_test_case_ids(ids)
|
|
|
|
assert expected == actual
|
|
|
|
def test_ParseTestCaseIds_ValidIntIds_IdsParsed(self):
|
|
ids = [12, 34, 56]
|
|
|
|
expected = {12, 34, 56}
|
|
actual = case_id._parse_test_case_ids(ids)
|
|
|
|
assert expected == actual
|
|
|
|
def test_ParseTestCaseIds_InvalidIds_ExceptionRaised(self):
|
|
ids = ['']
|
|
|
|
with pytest.raises(case_id.TestCaseIDException):
|
|
case_id._parse_test_case_ids(ids)
|
|
|