aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/pytest/ut/test_tools.py
diff options
context:
space:
mode:
authorsay <say@yandex-team.com>2022-10-27 13:35:57 +0300
committersay <say@yandex-team.com>2022-10-27 13:35:57 +0300
commit2a0b57f3998e3db7905b20ecd6218e62e3206d3a (patch)
treedd6cc46b50c416d31af7ceed33bb70d87d2c3354 /library/python/pytest/ut/test_tools.py
parent4581bf276d80c35411dd0c3bb19a65337f50d8fb (diff)
downloadydb-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.py51
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