diff options
author | say <say@yandex-team.com> | 2022-10-27 13:35:57 +0300 |
---|---|---|
committer | say <say@yandex-team.com> | 2022-10-27 13:35:57 +0300 |
commit | 2a0b57f3998e3db7905b20ecd6218e62e3206d3a (patch) | |
tree | dd6cc46b50c416d31af7ceed33bb70d87d2c3354 /library/python/pytest/ut/test_tools.py | |
parent | 4581bf276d80c35411dd0c3bb19a65337f50d8fb (diff) | |
download | ydb-2a0b57f3998e3db7905b20ecd6218e62e3206d3a.tar.gz |
Unify test listing and filtering
Diffstat (limited to 'library/python/pytest/ut/test_tools.py')
-rw-r--r-- | library/python/pytest/ut/test_tools.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/library/python/pytest/ut/test_tools.py b/library/python/pytest/ut/test_tools.py new file mode 100644 index 0000000000..fa6db5164f --- /dev/null +++ b/library/python/pytest/ut/test_tools.py @@ -0,0 +1,51 @@ +import pytest +import sys + +from library.python.pytest.yatest_tools import split_node_id + + +@pytest.fixture(params=["", "[param1,param2]"]) +def parameters(request): + return request.param + + +@pytest.mark.parametrize("node_id,expected_class_name,expected_test_name", + ( + ("package.test_script.py::test_name", "package.test_script.py", "test_name"), + ("package.test_script.py", "package.test_script.py", "package.test_script.py"), + ("package.test_script.py::class_name::test_name", "package.test_script.py::class_name", "test_name"), + ("package.test_script.py::class_name::subclass_name::test_name", "package.test_script.py::class_name", "test_name"), + ) +) +def test_split_node_id_without_path(parameters, node_id, expected_class_name, expected_test_name): + got = split_node_id(node_id + parameters) + assert (expected_class_name, expected_test_name + parameters) == got + + +@pytest.mark.parametrize("node_id,expected_class_name,expected_test_name", + ( + ("/arcadia/root/package/test_script.py", "package.test_script.py", "package.test_script.py"), + ("/arcadia/root/package/test_script.py::test_name","package.test_script.py", "test_name"), + ("/arcadia/root/package/test_script.py::class_name::test_name", "package.test_script.py::class_name", "test_name"), + ("/arcadia/root/package/test_script.py::class_name::subclass_name::test_name", "package.test_script.py::class_name", "test_name"), + # If module is not found in sys.extra_modules use basename as a class name + ("/arcadia/root/package/test_script2.py::test_name", "test_script2.py", "test_name"), + ) +) +def test_split_node_id_with_path(mocker, parameters, node_id, expected_class_name, expected_test_name): + mocker.patch.object(sys, 'extra_modules', sys.extra_modules | {'__tests__.package.test_script'}) + got = split_node_id(node_id + parameters) + assert (expected_class_name, expected_test_name + parameters) == got + + +@pytest.mark.parametrize("node_id,expected_class_name,expected_test_name", + ( + ("package.test_script.py::test_name", "package.test_script.py", "test_suffix"), + ("package.test_script.py", "package.test_script.py", "test_suffix"), + ("package.test_script.py::class_name::test_name", "package.test_script.py", "test_suffix"), + ("package.test_script.py::class_name::subclass_name::test_name", "package.test_script.py", "test_suffix"), + ) +) +def test_split_node_id_with_test_suffix(mocker, parameters, node_id, expected_class_name, expected_test_name): + got = split_node_id(node_id + parameters, "test_suffix") + assert (expected_class_name, expected_test_name + parameters) == got |