Repository: modin-project/modin

Issue:
Centralize tests in Modin
Right now, Modin tests are split between the top-level `modin/test` and in the directories (e.g. `modin/pandas/test`). I would like to centralize the test location to make it easier to run the test suite with `pytest`.


Discussion:
Hi,
I will look at this issue in participating at the Sprint.
Should we also move `stress_tests` and `asv_bench` (cc @anmyachev) under this location to clean up the root?
`asv_bench` has a separate benchmark infrastructure, I think it should not be mixed with other tests.

Resolving patch:
diff --git a/examples/docker/modin-hdk/nyc-taxi-hdk.py b/examples/docker/modin-hdk/nyc-taxi-hdk.py
--- a/examples/docker/modin-hdk/nyc-taxi-hdk.py
+++ b/examples/docker/modin-hdk/nyc-taxi-hdk.py
@@ -17,7 +17,7 @@
 
 import modin.pandas as pd
 from modin.experimental.sql import query
-from modin.pandas.test.utils import df_equals
+from modin.tests.pandas.utils import df_equals
 
 
 def read(filename):
diff --git a/modin/conftest.py b/modin/conftest.py
--- a/modin/conftest.py
+++ b/modin/conftest.py
@@ -54,6 +54,7 @@ def _saving_make_api_url(token, _make_api_url=modin.utils._make_api_url):
 
 import modin  # noqa: E402
 import modin.config  # noqa: E402
+import modin.tests.config  # noqa: E402
 from modin.config import (  # noqa: E402
     AsyncReadMode,
     BenchmarkMode,
@@ -70,7 +71,7 @@ def _saving_make_api_url(token, _make_api_url=modin.utils._make_api_url):
     BaseQueryCompiler,
     PandasQueryCompiler,
 )
-from modin.pandas.test.utils import (  # noqa: E402
+from modin.tests.pandas.utils import (  # noqa: E402
     NROWS,
     _make_csv_file,
     get_unique_filename,
@@ -99,7 +100,10 @@ def enforce_config():
     """
     orig_env = os.environ
     modin_start = os.path.dirname(modin.__file__)
-    modin_exclude = [os.path.dirname(modin.config.__file__)]
+    modin_exclude = [
+        os.path.dirname(modin.config.__file__),
+        os.path.dirname(modin.tests.config.__file__),
+    ]
 
     class PatchedEnv:
         @staticmethod
@@ -647,16 +651,16 @@ def s3_resource(s3_base):
     s3 = s3fs.S3FileSystem(client_kwargs={"endpoint_url": s3_base})
 
     test_s3_files = [
-        ("modin-bugs/multiple_csv/", "modin/pandas/test/data/multiple_csv/"),
+        ("modin-bugs/multiple_csv/", "modin/tests/pandas/data/multiple_csv/"),
         (
             "modin-bugs/test_data_dir.parquet/",
-            "modin/pandas/test/data/test_data_dir.parquet/",
+            "modin/tests/pandas/data/test_data_dir.parquet/",
         ),
-        ("modin-bugs/test_data.parquet", "modin/pandas/test/data/test_data.parquet"),
-        ("modin-bugs/test_data.json", "modin/pandas/test/data/test_data.json"),
-        ("modin-bugs/test_data.fwf", "modin/pandas/test/data/test_data.fwf"),
-        ("modin-bugs/test_data.feather", "modin/pandas/test/data/test_data.feather"),
-        ("modin-bugs/issue5159.parquet/", "modin/pandas/test/data/issue5159.parquet/"),
+        ("modin-bugs/test_data.parquet", "modin/tests/pandas/data/test_data.parquet"),
+        ("modin-bugs/test_data.json", "modin/tests/pandas/data/test_data.json"),
+        ("modin-bugs/test_data.fwf", "modin/tests/pandas/data/test_data.fwf"),
+        ("modin-bugs/test_data.feather", "modin/tests/pandas/data/test_data.feather"),
+        ("modin-bugs/issue5159.parquet/", "modin/tests/pandas/data/issue5159.parquet/"),
     ]
     for s3_key, file_name in test_s3_files:
         s3.put(file_name, f"{bucket}/{s3_key}", recursive=s3_key.endswith("/"))


Test patch:
diff --git a/modin/experimental/xgboost/test/__init__.py b/modin/experimental/xgboost/test/__init__.py
deleted file mode 100644
--- a/modin/experimental/xgboost/test/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Licensed to Modin Development Team under one or more contributor license agreements.
-# See the NOTICE file distributed with this work for additional information regarding
-# copyright ownership.  The Modin Development Team licenses this file to you under the
-# Apache License, Version 2.0 (the "License"); you may not use this file except in
-# compliance with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software distributed under
-# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
-# ANY KIND, either express or implied. See the License for the specific language
-# governing permissions and limitations under the License.
-
-"""Module holds tests for Modin XGBoost."""
diff --git a/modin/test/interchange/dataframe_protocol/pandas/__init__.py b/modin/test/interchange/dataframe_protocol/pandas/__init__.py
deleted file mode 100644
--- a/modin/test/interchange/dataframe_protocol/pandas/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Licensed to Modin Development Team under one or more contributor license agreements.
-# See the NOTICE file distributed with this work for additional information regarding
-# copyright ownership.  The Modin Development Team licenses this file to you under the
-# Apache License, Version 2.0 (the "License"); you may not use this file except in
-# compliance with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software distributed under
-# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
-# ANY KIND, either express or implied. See the License for the specific language
-# governing permissions and limitations under the License.
diff --git a/modin/config/test/__init__.py b/modin/tests/__init__.py
similarity index 100%
rename from modin/config/test/__init__.py
rename to modin/tests/__init__.py
diff --git a/modin/core/execution/dispatching/factories/test/__init__.py b/modin/tests/config/__init__.py
similarity index 100%
rename from modin/core/execution/dispatching/factories/test/__init__.py
rename to modin/tests/config/__init__.py
diff --git a/modin/config/test/docs_module/__init__.py b/modin/tests/config/docs_module/__init__.py
similarity index 100%
rename from modin/config/test/docs_module/__init__.py
rename to modin/tests/config/docs_module/__init__.py
diff --git a/modin/config/test/docs_module/classes.py b/modin/tests/config/docs_module/classes.py
similarity index 100%
rename from modin/config/test/docs_module/classes.py
rename to modin/tests/config/docs_module/classes.py
diff --git a/modin/config/test/docs_module/functions.py b/modin/tests/config/docs_module/functions.py
similarity index 100%
rename from modin/config/test/docs_module/functions.py
rename to modin/tests/config/docs_module/functions.py
diff --git a/modin/config/test/test_envvars.py b/modin/tests/config/test_envvars.py
similarity index 99%
rename from modin/config/test/test_envvars.py
rename to modin/tests/config/test_envvars.py
--- a/modin/config/test/test_envvars.py
+++ b/modin/tests/config/test_envvars.py
@@ -87,7 +87,7 @@ def test_doc_module():
     import modin.pandas as pd
     from modin.config import DocModule
 
-    DocModule.put("modin.config.test.docs_module")
+    DocModule.put("modin.tests.config.docs_module")
 
     # Test for override
     assert (
diff --git a/modin/config/test/test_parameter.py b/modin/tests/config/test_parameter.py
similarity index 100%
rename from modin/config/test/test_parameter.py
rename to modin/tests/config/test_parameter.py
diff --git a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/__init__.py b/modin/tests/core/__init__.py
similarity index 100%
rename from modin/experimental/core/execution/native/implementations/hdk_on_native/test/__init__.py
rename to modin/tests/core/__init__.py
diff --git a/modin/test/storage_formats/base/test_internals.py b/modin/tests/core/storage_formats/base/test_internals.py
similarity index 98%
rename from modin/test/storage_formats/base/test_internals.py
rename to modin/tests/core/storage_formats/base/test_internals.py
--- a/modin/test/storage_formats/base/test_internals.py
+++ b/modin/tests/core/storage_formats/base/test_internals.py
@@ -16,7 +16,7 @@
 
 import modin.pandas as pd
 from modin.config import NPartitions
-from modin.pandas.test.utils import create_test_dfs, df_equals, test_data_values
+from modin.tests.pandas.utils import create_test_dfs, df_equals, test_data_values
 
 NPartitions.put(4)
 
diff --git a/modin/test/storage_formats/cudf/test_gpu_managers.py b/modin/tests/core/storage_formats/cudf/test_gpu_managers.py
similarity index 100%
rename from modin/test/storage_formats/cudf/test_gpu_managers.py
rename to modin/tests/core/storage_formats/cudf/test_gpu_managers.py
diff --git a/modin/test/storage_formats/cudf/test_internals.py b/modin/tests/core/storage_formats/cudf/test_internals.py
similarity index 100%
rename from modin/test/storage_formats/cudf/test_internals.py
rename to modin/tests/core/storage_formats/cudf/test_internals.py
diff --git a/modin/test/storage_formats/hdk/test_internals.py b/modin/tests/core/storage_formats/hdk/test_internals.py
similarity index 100%
rename from modin/test/storage_formats/hdk/test_internals.py
rename to modin/tests/core/storage_formats/hdk/test_internals.py
diff --git a/modin/test/storage_formats/pandas/test_internals.py b/modin/tests/core/storage_formats/pandas/test_internals.py
similarity index 99%
rename from modin/test/storage_formats/pandas/test_internals.py
rename to modin/tests/core/storage_formats/pandas/test_internals.py
--- a/modin/test/storage_formats/pandas/test_internals.py
+++ b/modin/tests/core/storage_formats/pandas/test_internals.py
@@ -31,7 +31,7 @@
 from modin.core.execution.utils import remote_function
 from modin.core.storage_formats.pandas.utils import split_result_of_axis_func_pandas
 from modin.distributed.dataframe.pandas import from_partitions
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     create_test_dfs,
     df_equals,
     eval_general,
diff --git a/modin/core/execution/dispatching/factories/test/test_dispatcher.py b/modin/tests/core/test_dispatcher.py
similarity index 100%
rename from modin/core/execution/dispatching/factories/test/test_dispatcher.py
rename to modin/tests/core/test_dispatcher.py
diff --git a/modin/experimental/fuzzydata/test/__init__.py b/modin/tests/experimental/__init__.py
similarity index 100%
rename from modin/experimental/fuzzydata/test/__init__.py
rename to modin/tests/experimental/__init__.py
diff --git a/modin/experimental/pandas/test/__init__.py b/modin/tests/experimental/hdk_on_native/__init__.py
similarity index 100%
rename from modin/experimental/pandas/test/__init__.py
rename to modin/tests/experimental/hdk_on_native/__init__.py
diff --git a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_dataframe.py b/modin/tests/experimental/hdk_on_native/test_dataframe.py
similarity index 99%
rename from modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_dataframe.py
rename to modin/tests/experimental/hdk_on_native/test_dataframe.py
--- a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_dataframe.py
+++ b/modin/tests/experimental/hdk_on_native/test_dataframe.py
@@ -23,13 +23,13 @@
 from pyhdk import __version__ as hdk_version
 
 from modin.config import StorageFormat
-from modin.pandas.test.utils import (
+from modin.tests.interchange.dataframe_protocol.hdk.utils import split_df_into_chunks
+from modin.tests.pandas.utils import (
     create_test_dfs,
     default_to_pandas_ignore_string,
     random_state,
     test_data,
 )
-from modin.test.interchange.dataframe_protocol.hdk.utils import split_df_into_chunks
 
 from .utils import ForceHdkImport, eval_io, run_and_compare, set_execution_mode
 
@@ -46,7 +46,7 @@
     HdkOnNativeDataframePartitionManager,
 )
 from modin.pandas.io import from_arrow
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     bool_arg_values,
     df_equals,
     df_equals_with_non_stable_indices,
@@ -112,7 +112,9 @@ class TestCSV:
 
     def test_usecols_csv(self):
         """check with the following arguments: names, dtype, skiprows, delimiter"""
-        csv_file = os.path.join(self.root, "modin/pandas/test/data", "test_usecols.csv")
+        csv_file = os.path.join(
+            self.root, "modin/tests/pandas/data", "test_usecols.csv"
+        )
 
         for kwargs in (
             {"delimiter": ","},
@@ -200,7 +202,7 @@ def test_csv_fillna(self):
     @pytest.mark.parametrize("null_dtype", ["category", "float64"])
     def test_null_col(self, null_dtype):
         csv_file = os.path.join(
-            self.root, "modin/pandas/test/data", "test_null_col.csv"
+            self.root, "modin/tests/pandas/data", "test_null_col.csv"
         )
         ref = pandas.read_csv(
             csv_file,
@@ -228,7 +230,9 @@ def test_null_col(self, null_dtype):
         df_equals(ref, exp)
 
     def test_read_and_concat(self):
-        csv_file = os.path.join(self.root, "modin/pandas/test/data", "test_usecols.csv")
+        csv_file = os.path.join(
+            self.root, "modin/tests/pandas/data", "test_usecols.csv"
+        )
         ref1 = pandas.read_csv(csv_file)
         ref2 = pandas.read_csv(csv_file)
         ref = pandas.concat([ref1, ref2])
@@ -242,7 +246,9 @@ def test_read_and_concat(self):
     @pytest.mark.parametrize("names", [None, ["a", "b", "c", "d", "e"]])
     @pytest.mark.parametrize("header", [None, 0])
     def test_from_csv(self, header, names):
-        csv_file = os.path.join(self.root, "modin/pandas/test/data", "test_usecols.csv")
+        csv_file = os.path.join(
+            self.root, "modin/tests/pandas/data", "test_usecols.csv"
+        )
         eval_io(
             fn_name="read_csv",
             # read_csv kwargs
@@ -253,7 +259,7 @@ def test_from_csv(self, header, names):
 
     @pytest.mark.parametrize("kwargs", [{"sep": "|"}, {"delimiter": "|"}])
     def test_sep_delimiter(self, kwargs):
-        csv_file = os.path.join(self.root, "modin/pandas/test/data", "test_delim.csv")
+        csv_file = os.path.join(self.root, "modin/tests/pandas/data", "test_delim.csv")
         eval_io(
             fn_name="read_csv",
             # read_csv kwargs
@@ -263,7 +269,9 @@ def test_sep_delimiter(self, kwargs):
 
     @pytest.mark.skip(reason="https://github.com/modin-project/modin/issues/2174")
     def test_float32(self):
-        csv_file = os.path.join(self.root, "modin/pandas/test/data", "test_usecols.csv")
+        csv_file = os.path.join(
+            self.root, "modin/tests/pandas/data", "test_usecols.csv"
+        )
         kwargs = {
             "dtype": {"a": "float32", "b": "float32"},
         }
diff --git a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_init.py b/modin/tests/experimental/hdk_on_native/test_init.py
similarity index 100%
rename from modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_init.py
rename to modin/tests/experimental/hdk_on_native/test_init.py
diff --git a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_utils.py b/modin/tests/experimental/hdk_on_native/test_utils.py
similarity index 96%
rename from modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_utils.py
rename to modin/tests/experimental/hdk_on_native/test_utils.py
--- a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/test_utils.py
+++ b/modin/tests/experimental/hdk_on_native/test_utils.py
@@ -18,7 +18,9 @@
 import pandas
 import pytz
 
-from ..dataframe.utils import ColNameCodec
+from modin.experimental.core.execution.native.implementations.hdk_on_native.dataframe.utils import (
+    ColNameCodec,
+)
 
 UNICODE_RANGES = [
     (0x0020, 0x007F),  # Basic Latin
diff --git a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/utils.py b/modin/tests/experimental/hdk_on_native/utils.py
similarity index 98%
rename from modin/experimental/core/execution/native/implementations/hdk_on_native/test/utils.py
rename to modin/tests/experimental/hdk_on_native/utils.py
--- a/modin/experimental/core/execution/native/implementations/hdk_on_native/test/utils.py
+++ b/modin/tests/experimental/hdk_on_native/utils.py
@@ -18,8 +18,8 @@
 from pandas.core.dtypes.common import is_datetime64_any_dtype, is_object_dtype
 
 import modin.pandas as pd
-from modin.pandas.test.utils import df_equals
-from modin.pandas.test.utils import eval_io as general_eval_io
+from modin.tests.pandas.utils import df_equals
+from modin.tests.pandas.utils import eval_io as general_eval_io
 from modin.utils import try_cast_to_pandas
 
 
@@ -39,7 +39,7 @@ def eval_io(
 
     Notes
     -----
-    For parameters description please refer to ``modin.pandas.test.utils.eval_io``.
+    For parameters description please refer to ``modin.tests.pandas.utils.eval_io``.
     """
 
     def hdk_comparator(df1, df2, **kwargs):
diff --git a/modin/experimental/spreadsheet/test/__init__.py b/modin/tests/experimental/spreadsheet/__init__.py
similarity index 100%
rename from modin/experimental/spreadsheet/test/__init__.py
rename to modin/tests/experimental/spreadsheet/__init__.py
diff --git a/modin/experimental/spreadsheet/test/test_general.py b/modin/tests/experimental/spreadsheet/test_general.py
similarity index 100%
rename from modin/experimental/spreadsheet/test/test_general.py
rename to modin/tests/experimental/spreadsheet/test_general.py
diff --git a/modin/experimental/fuzzydata/test/test_fuzzydata.py b/modin/tests/experimental/test_fuzzydata.py
similarity index 100%
rename from modin/experimental/fuzzydata/test/test_fuzzydata.py
rename to modin/tests/experimental/test_fuzzydata.py
diff --git a/modin/experimental/pandas/test/test_io_exp.py b/modin/tests/experimental/test_io_exp.py
similarity index 99%
rename from modin/experimental/pandas/test/test_io_exp.py
rename to modin/tests/experimental/test_io_exp.py
--- a/modin/experimental/pandas/test/test_io_exp.py
+++ b/modin/tests/experimental/test_io_exp.py
@@ -22,14 +22,14 @@
 
 import modin.experimental.pandas as pd
 from modin.config import AsyncReadMode, Engine
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     df_equals,
     eval_general,
     parse_dates_values_by_id,
     test_data,
     time_parsing_csv_path,
 )
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import try_cast_to_pandas
 
 
diff --git a/modin/experimental/batch/test/test_pipeline.py b/modin/tests/experimental/test_pipeline.py
similarity index 99%
rename from modin/experimental/batch/test/test_pipeline.py
rename to modin/tests/experimental/test_pipeline.py
--- a/modin/experimental/batch/test/test_pipeline.py
+++ b/modin/tests/experimental/test_pipeline.py
@@ -20,7 +20,7 @@
 from modin.core.execution.ray.common import RayWrapper
 from modin.distributed.dataframe.pandas.partitions import from_partitions
 from modin.experimental.batch.pipeline import PandasQueryPipeline
-from modin.pandas.test.utils import df_equals
+from modin.tests.pandas.utils import df_equals
 
 
 @pytest.mark.skipif(
diff --git a/modin/experimental/sql/test/test_sql.py b/modin/tests/experimental/test_sql.py
similarity index 97%
rename from modin/experimental/sql/test/test_sql.py
rename to modin/tests/experimental/test_sql.py
--- a/modin/experimental/sql/test/test_sql.py
+++ b/modin/tests/experimental/test_sql.py
@@ -18,7 +18,7 @@
 
 import modin.pandas as pd
 from modin.config import StorageFormat
-from modin.pandas.test.utils import default_to_pandas_ignore_string, df_equals
+from modin.tests.pandas.utils import default_to_pandas_ignore_string, df_equals
 
 pytestmark = pytest.mark.filterwarnings(default_to_pandas_ignore_string)
 
diff --git a/modin/experimental/sql/test/__init__.py b/modin/tests/experimental/torch/__init__.py
similarity index 100%
rename from modin/experimental/sql/test/__init__.py
rename to modin/tests/experimental/torch/__init__.py
diff --git a/modin/experimental/torch/tests/test_dataloader.py b/modin/tests/experimental/torch/test_dataloader.py
similarity index 100%
rename from modin/experimental/torch/tests/test_dataloader.py
rename to modin/tests/experimental/torch/test_dataloader.py
diff --git a/modin/experimental/torch/tests/__init__.py b/modin/tests/experimental/xgboost/__init__.py
similarity index 100%
rename from modin/experimental/torch/tests/__init__.py
rename to modin/tests/experimental/xgboost/__init__.py
diff --git a/modin/experimental/xgboost/test/test_default.py b/modin/tests/experimental/xgboost/test_default.py
similarity index 100%
rename from modin/experimental/xgboost/test/test_default.py
rename to modin/tests/experimental/xgboost/test_default.py
diff --git a/modin/experimental/xgboost/test/test_dmatrix.py b/modin/tests/experimental/xgboost/test_dmatrix.py
similarity index 100%
rename from modin/experimental/xgboost/test/test_dmatrix.py
rename to modin/tests/experimental/xgboost/test_dmatrix.py
diff --git a/modin/experimental/xgboost/test/test_xgboost.py b/modin/tests/experimental/xgboost/test_xgboost.py
similarity index 100%
rename from modin/experimental/xgboost/test/test_xgboost.py
rename to modin/tests/experimental/xgboost/test_xgboost.py
diff --git a/modin/numpy/test/__init__.py b/modin/tests/interchange/__init__.py
similarity index 100%
rename from modin/numpy/test/__init__.py
rename to modin/tests/interchange/__init__.py
diff --git a/modin/pandas/api/extensions/test/__init__.py b/modin/tests/interchange/dataframe_protocol/__init__.py
similarity index 100%
rename from modin/pandas/api/extensions/test/__init__.py
rename to modin/tests/interchange/dataframe_protocol/__init__.py
diff --git a/modin/pandas/test/__init__.py b/modin/tests/interchange/dataframe_protocol/base/__init__.py
similarity index 100%
rename from modin/pandas/test/__init__.py
rename to modin/tests/interchange/dataframe_protocol/base/__init__.py
diff --git a/modin/test/interchange/dataframe_protocol/base/test_sanity.py b/modin/tests/interchange/dataframe_protocol/base/test_sanity.py
similarity index 96%
rename from modin/test/interchange/dataframe_protocol/base/test_sanity.py
rename to modin/tests/interchange/dataframe_protocol/base/test_sanity.py
--- a/modin/test/interchange/dataframe_protocol/base/test_sanity.py
+++ b/modin/tests/interchange/dataframe_protocol/base/test_sanity.py
@@ -16,7 +16,7 @@
 import pytest
 
 import modin.pandas as pd
-from modin.pandas.test.utils import default_to_pandas_ignore_string
+from modin.tests.pandas.utils import default_to_pandas_ignore_string
 
 
 def test_sanity():
diff --git a/modin/test/interchange/dataframe_protocol/base/test_utils.py b/modin/tests/interchange/dataframe_protocol/base/test_utils.py
similarity index 100%
rename from modin/test/interchange/dataframe_protocol/base/test_utils.py
rename to modin/tests/interchange/dataframe_protocol/base/test_utils.py
diff --git a/modin/pandas/test/data/__init__.py b/modin/tests/interchange/dataframe_protocol/hdk/__init__.py
similarity index 100%
rename from modin/pandas/test/data/__init__.py
rename to modin/tests/interchange/dataframe_protocol/hdk/__init__.py
diff --git a/modin/test/interchange/dataframe_protocol/hdk/test_protocol.py b/modin/tests/interchange/dataframe_protocol/hdk/test_protocol.py
similarity index 99%
rename from modin/test/interchange/dataframe_protocol/hdk/test_protocol.py
rename to modin/tests/interchange/dataframe_protocol/hdk/test_protocol.py
--- a/modin/test/interchange/dataframe_protocol/hdk/test_protocol.py
+++ b/modin/tests/interchange/dataframe_protocol/hdk/test_protocol.py
@@ -25,8 +25,8 @@
     set_nulls,
 )
 from modin.pandas.io import from_arrow, from_dataframe
-from modin.pandas.test.utils import df_equals
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.pandas.utils import df_equals
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 
 from .utils import export_frame, get_data_of_all_types, split_df_into_chunks
 
diff --git a/modin/test/interchange/dataframe_protocol/hdk/utils.py b/modin/tests/interchange/dataframe_protocol/hdk/utils.py
similarity index 98%
rename from modin/test/interchange/dataframe_protocol/hdk/utils.py
rename to modin/tests/interchange/dataframe_protocol/hdk/utils.py
--- a/modin/test/interchange/dataframe_protocol/hdk/utils.py
+++ b/modin/tests/interchange/dataframe_protocol/hdk/utils.py
@@ -22,9 +22,7 @@
     from_dataframe_to_pandas,
     protocol_df_chunk_to_pandas,
 )
-from modin.experimental.core.execution.native.implementations.hdk_on_native.test.utils import (
-    ForceHdkImport,
-)
+from modin.tests.experimental.hdk_on_native.utils import ForceHdkImport
 
 
 def split_df_into_chunks(df, n_chunks):
diff --git a/modin/pandas/test/dataframe/__init__.py b/modin/tests/interchange/dataframe_protocol/pandas/__init__.py
similarity index 100%
rename from modin/pandas/test/dataframe/__init__.py
rename to modin/tests/interchange/dataframe_protocol/pandas/__init__.py
diff --git a/modin/test/interchange/dataframe_protocol/pandas/test_protocol.py b/modin/tests/interchange/dataframe_protocol/pandas/test_protocol.py
similarity index 95%
rename from modin/test/interchange/dataframe_protocol/pandas/test_protocol.py
rename to modin/tests/interchange/dataframe_protocol/pandas/test_protocol.py
--- a/modin/test/interchange/dataframe_protocol/pandas/test_protocol.py
+++ b/modin/tests/interchange/dataframe_protocol/pandas/test_protocol.py
@@ -16,9 +16,9 @@
 import pandas
 
 import modin.pandas as pd
-from modin.pandas.test.utils import df_equals, test_data
 from modin.pandas.utils import from_dataframe
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.pandas.utils import df_equals, test_data
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 
 
 def eval_df_protocol(modin_df_producer):
diff --git a/modin/test/interchange/dataframe_protocol/test_general.py b/modin/tests/interchange/dataframe_protocol/test_general.py
similarity index 100%
rename from modin/test/interchange/dataframe_protocol/test_general.py
rename to modin/tests/interchange/dataframe_protocol/test_general.py
diff --git a/modin/pandas/test/integrations/__init__.py b/modin/tests/numpy/__init__.py
similarity index 100%
rename from modin/pandas/test/integrations/__init__.py
rename to modin/tests/numpy/__init__.py
diff --git a/modin/numpy/test/test_array.py b/modin/tests/numpy/test_array.py
similarity index 99%
rename from modin/numpy/test/test_array.py
rename to modin/tests/numpy/test_array.py
--- a/modin/numpy/test/test_array.py
+++ b/modin/tests/numpy/test_array.py
@@ -92,7 +92,7 @@ def test_to_df():
     import pandas
 
     import modin.pandas as pd
-    from modin.pandas.test.utils import df_equals
+    from modin.tests.pandas.utils import df_equals
 
     modin_df = pd.DataFrame(np.array([1, 2, 3]))
     pandas_df = pandas.DataFrame(numpy.array([1, 2, 3]))
@@ -118,7 +118,7 @@ def test_to_series():
     import pandas
 
     import modin.pandas as pd
-    from modin.pandas.test.utils import df_equals
+    from modin.tests.pandas.utils import df_equals
 
     with pytest.raises(ValueError, match="Data must be 1-dimensional"):
         pd.Series(np.array([[1, 2, 3], [4, 5, 6]]))
diff --git a/modin/numpy/test/test_array_arithmetic.py b/modin/tests/numpy/test_array_arithmetic.py
similarity index 100%
rename from modin/numpy/test/test_array_arithmetic.py
rename to modin/tests/numpy/test_array_arithmetic.py
diff --git a/modin/numpy/test/test_array_axis_functions.py b/modin/tests/numpy/test_array_axis_functions.py
similarity index 100%
rename from modin/numpy/test/test_array_axis_functions.py
rename to modin/tests/numpy/test_array_axis_functions.py
diff --git a/modin/numpy/test/test_array_creation.py b/modin/tests/numpy/test_array_creation.py
similarity index 100%
rename from modin/numpy/test/test_array_creation.py
rename to modin/tests/numpy/test_array_creation.py
diff --git a/modin/numpy/test/test_array_indexing.py b/modin/tests/numpy/test_array_indexing.py
similarity index 100%
rename from modin/numpy/test/test_array_indexing.py
rename to modin/tests/numpy/test_array_indexing.py
diff --git a/modin/numpy/test/test_array_linalg.py b/modin/tests/numpy/test_array_linalg.py
similarity index 100%
rename from modin/numpy/test/test_array_linalg.py
rename to modin/tests/numpy/test_array_linalg.py
diff --git a/modin/numpy/test/test_array_logic.py b/modin/tests/numpy/test_array_logic.py
similarity index 100%
rename from modin/numpy/test/test_array_logic.py
rename to modin/tests/numpy/test_array_logic.py
diff --git a/modin/numpy/test/test_array_math.py b/modin/tests/numpy/test_array_math.py
similarity index 100%
rename from modin/numpy/test/test_array_math.py
rename to modin/tests/numpy/test_array_math.py
diff --git a/modin/numpy/test/test_array_shaping.py b/modin/tests/numpy/test_array_shaping.py
similarity index 100%
rename from modin/numpy/test/test_array_shaping.py
rename to modin/tests/numpy/test_array_shaping.py
diff --git a/modin/numpy/test/utils.py b/modin/tests/numpy/utils.py
similarity index 100%
rename from modin/numpy/test/utils.py
rename to modin/tests/numpy/utils.py
diff --git a/modin/pandas/test/internals/__init__.py b/modin/tests/pandas/__init__.py
similarity index 100%
rename from modin/pandas/test/internals/__init__.py
rename to modin/tests/pandas/__init__.py
diff --git a/modin/pandas/test/conftest.py b/modin/tests/pandas/conftest.py
similarity index 100%
rename from modin/pandas/test/conftest.py
rename to modin/tests/pandas/conftest.py
diff --git a/modin/test/__init__.py b/modin/tests/pandas/data/__init__.py
similarity index 100%
rename from modin/test/__init__.py
rename to modin/tests/pandas/data/__init__.py
diff --git a/modin/pandas/test/data/airline.sas7bdat b/modin/tests/pandas/data/airline.sas7bdat
similarity index 100%
rename from modin/pandas/test/data/airline.sas7bdat
rename to modin/tests/pandas/data/airline.sas7bdat
diff --git a/modin/pandas/test/data/blah.csv b/modin/tests/pandas/data/blah.csv
similarity index 100%
rename from modin/pandas/test/data/blah.csv
rename to modin/tests/pandas/data/blah.csv
diff --git a/modin/pandas/test/data/every_other_row_nan.xlsx b/modin/tests/pandas/data/every_other_row_nan.xlsx
similarity index 100%
rename from modin/pandas/test/data/every_other_row_nan.xlsx
rename to modin/tests/pandas/data/every_other_row_nan.xlsx
diff --git a/modin/pandas/test/data/excel_sheetname_title.xlsx b/modin/tests/pandas/data/excel_sheetname_title.xlsx
similarity index 100%
rename from modin/pandas/test/data/excel_sheetname_title.xlsx
rename to modin/tests/pandas/data/excel_sheetname_title.xlsx
diff --git a/modin/pandas/test/data/hdfs.parquet/part-00000-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet b/modin/tests/pandas/data/hdfs.parquet/part-00000-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
similarity index 100%
rename from modin/pandas/test/data/hdfs.parquet/part-00000-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
rename to modin/tests/pandas/data/hdfs.parquet/part-00000-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
diff --git a/modin/pandas/test/data/hdfs.parquet/part-00001-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet b/modin/tests/pandas/data/hdfs.parquet/part-00001-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
similarity index 100%
rename from modin/pandas/test/data/hdfs.parquet/part-00001-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
rename to modin/tests/pandas/data/hdfs.parquet/part-00001-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
diff --git a/modin/pandas/test/data/hdfs.parquet/part-00002-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet b/modin/tests/pandas/data/hdfs.parquet/part-00002-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
similarity index 100%
rename from modin/pandas/test/data/hdfs.parquet/part-00002-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
rename to modin/tests/pandas/data/hdfs.parquet/part-00002-a7bff54c-2ff4-4654-9783-626542bd3a90-c000.snappy.parquet
diff --git a/modin/pandas/test/data/issue5159.parquet/part-0000.snappy.parquet/par=a/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet b/modin/tests/pandas/data/issue5159.parquet/part-0000.snappy.parquet/par=a/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet
similarity index 100%
rename from modin/pandas/test/data/issue5159.parquet/part-0000.snappy.parquet/par=a/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet
rename to modin/tests/pandas/data/issue5159.parquet/part-0000.snappy.parquet/par=a/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet
diff --git a/modin/pandas/test/data/issue5159.parquet/part-0000.snappy.parquet/par=b/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet b/modin/tests/pandas/data/issue5159.parquet/part-0000.snappy.parquet/par=b/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet
similarity index 100%
rename from modin/pandas/test/data/issue5159.parquet/part-0000.snappy.parquet/par=b/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet
rename to modin/tests/pandas/data/issue5159.parquet/part-0000.snappy.parquet/par=b/44c5b23d806c4dc8a97d70c4fb2219f5-0.parquet
diff --git a/modin/pandas/test/data/issue_1930.csv b/modin/tests/pandas/data/issue_1930.csv
similarity index 100%
rename from modin/pandas/test/data/issue_1930.csv
rename to modin/tests/pandas/data/issue_1930.csv
diff --git a/modin/pandas/test/data/issue_2074.csv b/modin/tests/pandas/data/issue_2074.csv
similarity index 100%
rename from modin/pandas/test/data/issue_2074.csv
rename to modin/tests/pandas/data/issue_2074.csv
diff --git a/modin/pandas/test/data/issue_2239.csv b/modin/tests/pandas/data/issue_2239.csv
similarity index 100%
rename from modin/pandas/test/data/issue_2239.csv
rename to modin/tests/pandas/data/issue_2239.csv
diff --git a/modin/pandas/test/data/issue_3119.csv b/modin/tests/pandas/data/issue_3119.csv
similarity index 100%
rename from modin/pandas/test/data/issue_3119.csv
rename to modin/tests/pandas/data/issue_3119.csv
diff --git a/modin/pandas/test/data/issue_4543.csv b/modin/tests/pandas/data/issue_4543.csv
similarity index 100%
rename from modin/pandas/test/data/issue_4543.csv
rename to modin/tests/pandas/data/issue_4543.csv
diff --git a/modin/pandas/test/data/issue_976.csv b/modin/tests/pandas/data/issue_976.csv
similarity index 100%
rename from modin/pandas/test/data/issue_976.csv
rename to modin/tests/pandas/data/issue_976.csv
diff --git a/modin/pandas/test/data/modin_error_book.xlsx b/modin/tests/pandas/data/modin_error_book.xlsx
similarity index 100%
rename from modin/pandas/test/data/modin_error_book.xlsx
rename to modin/tests/pandas/data/modin_error_book.xlsx
diff --git a/modin/pandas/test/data/multiple_csv/test_data0.csv b/modin/tests/pandas/data/multiple_csv/test_data0.csv
similarity index 100%
rename from modin/pandas/test/data/multiple_csv/test_data0.csv
rename to modin/tests/pandas/data/multiple_csv/test_data0.csv
diff --git a/modin/pandas/test/data/multiple_csv/test_data1.csv b/modin/tests/pandas/data/multiple_csv/test_data1.csv
similarity index 100%
rename from modin/pandas/test/data/multiple_csv/test_data1.csv
rename to modin/tests/pandas/data/multiple_csv/test_data1.csv
diff --git a/modin/pandas/test/data/newlines.csv b/modin/tests/pandas/data/newlines.csv
similarity index 100%
rename from modin/pandas/test/data/newlines.csv
rename to modin/tests/pandas/data/newlines.csv
diff --git a/modin/pandas/test/data/test_border_rows.xlsx b/modin/tests/pandas/data/test_border_rows.xlsx
similarity index 100%
rename from modin/pandas/test/data/test_border_rows.xlsx
rename to modin/tests/pandas/data/test_border_rows.xlsx
diff --git a/modin/pandas/test/data/test_categories.csv b/modin/tests/pandas/data/test_categories.csv
similarity index 100%
rename from modin/pandas/test/data/test_categories.csv
rename to modin/tests/pandas/data/test_categories.csv
diff --git a/modin/pandas/test/data/test_categories.json b/modin/tests/pandas/data/test_categories.json
similarity index 100%
rename from modin/pandas/test/data/test_categories.json
rename to modin/tests/pandas/data/test_categories.json
diff --git a/modin/pandas/test/data/test_data.feather b/modin/tests/pandas/data/test_data.feather
similarity index 100%
rename from modin/pandas/test/data/test_data.feather
rename to modin/tests/pandas/data/test_data.feather
diff --git a/modin/pandas/test/data/test_data.fwf b/modin/tests/pandas/data/test_data.fwf
similarity index 100%
rename from modin/pandas/test/data/test_data.fwf
rename to modin/tests/pandas/data/test_data.fwf
diff --git a/modin/pandas/test/data/test_data.json b/modin/tests/pandas/data/test_data.json
similarity index 100%
rename from modin/pandas/test/data/test_data.json
rename to modin/tests/pandas/data/test_data.json
diff --git a/modin/pandas/test/data/test_data.parquet b/modin/tests/pandas/data/test_data.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data.parquet
rename to modin/tests/pandas/data/test_data.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_0.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_0.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_0.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_0.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_1.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_1.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_1.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_1.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_10.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_10.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_10.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_10.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_11.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_11.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_11.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_11.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_12.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_12.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_12.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_12.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_13.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_13.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_13.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_13.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_14.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_14.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_14.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_14.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_15.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_15.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_15.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_15.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_2.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_2.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_2.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_2.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_3.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_3.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_3.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_3.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_4.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_4.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_4.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_4.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_5.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_5.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_5.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_5.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_6.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_6.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_6.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_6.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_7.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_7.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_7.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_7.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_8.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_8.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_8.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_8.parquet
diff --git a/modin/pandas/test/data/test_data_dir.parquet/part_9.parquet b/modin/tests/pandas/data/test_data_dir.parquet/part_9.parquet
similarity index 100%
rename from modin/pandas/test/data/test_data_dir.parquet/part_9.parquet
rename to modin/tests/pandas/data/test_data_dir.parquet/part_9.parquet
diff --git a/modin/pandas/test/data/test_delim.csv b/modin/tests/pandas/data/test_delim.csv
similarity index 100%
rename from modin/pandas/test/data/test_delim.csv
rename to modin/tests/pandas/data/test_delim.csv
diff --git a/modin/pandas/test/data/test_different_columns_in_rows.json b/modin/tests/pandas/data/test_different_columns_in_rows.json
similarity index 100%
rename from modin/pandas/test/data/test_different_columns_in_rows.json
rename to modin/tests/pandas/data/test_different_columns_in_rows.json
diff --git a/modin/pandas/test/data/test_empty_rows.xlsx b/modin/tests/pandas/data/test_empty_rows.xlsx
similarity index 100%
rename from modin/pandas/test/data/test_empty_rows.xlsx
rename to modin/tests/pandas/data/test_empty_rows.xlsx
diff --git a/modin/pandas/test/data/test_emptyline.xlsx b/modin/tests/pandas/data/test_emptyline.xlsx
similarity index 100%
rename from modin/pandas/test/data/test_emptyline.xlsx
rename to modin/tests/pandas/data/test_emptyline.xlsx
diff --git a/modin/pandas/test/data/test_null_col.csv b/modin/tests/pandas/data/test_null_col.csv
similarity index 100%
rename from modin/pandas/test/data/test_null_col.csv
rename to modin/tests/pandas/data/test_null_col.csv
diff --git a/modin/pandas/test/data/test_time_parsing.csv b/modin/tests/pandas/data/test_time_parsing.csv
similarity index 100%
rename from modin/pandas/test/data/test_time_parsing.csv
rename to modin/tests/pandas/data/test_time_parsing.csv
diff --git a/modin/pandas/test/data/test_usecols.csv b/modin/tests/pandas/data/test_usecols.csv
similarity index 100%
rename from modin/pandas/test/data/test_usecols.csv
rename to modin/tests/pandas/data/test_usecols.csv
diff --git a/modin/test/interchange/__init__.py b/modin/tests/pandas/dataframe/__init__.py
similarity index 100%
rename from modin/test/interchange/__init__.py
rename to modin/tests/pandas/dataframe/__init__.py
diff --git a/modin/pandas/test/dataframe/conftest.py b/modin/tests/pandas/dataframe/conftest.py
similarity index 100%
rename from modin/pandas/test/dataframe/conftest.py
rename to modin/tests/pandas/dataframe/conftest.py
diff --git a/modin/pandas/test/dataframe/test_binary.py b/modin/tests/pandas/dataframe/test_binary.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_binary.py
rename to modin/tests/pandas/dataframe/test_binary.py
--- a/modin/pandas/test/dataframe/test_binary.py
+++ b/modin/tests/pandas/dataframe/test_binary.py
@@ -21,7 +21,7 @@
 from modin.core.dataframe.pandas.partitioning.axis_partition import (
     PandasDataframeAxisPartition,
 )
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     CustomIntegerForAddition,
     NonCommutativeMultiplyInteger,
     create_test_dfs,
@@ -32,7 +32,7 @@
     test_data_keys,
     test_data_values,
 )
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import get_current_execution
 
 NPartitions.put(4)
diff --git a/modin/pandas/test/dataframe/test_default.py b/modin/tests/pandas/dataframe/test_default.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_default.py
rename to modin/tests/pandas/dataframe/test_default.py
--- a/modin/pandas/test/dataframe/test_default.py
+++ b/modin/tests/pandas/dataframe/test_default.py
@@ -24,7 +24,7 @@
 import modin.pandas as pd
 from modin.config import Engine, NPartitions, StorageFormat
 from modin.pandas.io import to_pandas
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     axis_keys,
     axis_values,
     create_test_dfs,
@@ -42,7 +42,7 @@
     test_data_resample,
     test_data_values,
 )
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import get_current_execution
 
 NPartitions.put(4)
diff --git a/modin/pandas/test/dataframe/test_indexing.py b/modin/tests/pandas/dataframe/test_indexing.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_indexing.py
rename to modin/tests/pandas/dataframe/test_indexing.py
--- a/modin/pandas/test/dataframe/test_indexing.py
+++ b/modin/tests/pandas/dataframe/test_indexing.py
@@ -23,7 +23,8 @@
 import modin.pandas as pd
 from modin.config import MinPartitionSize, NPartitions, StorageFormat
 from modin.pandas.indexing import is_range_like
-from modin.pandas.test.utils import (
+from modin.pandas.testing import assert_index_equal
+from modin.tests.pandas.utils import (
     NROWS,
     RAND_HIGH,
     RAND_LOW,
@@ -42,7 +43,6 @@
     test_data_keys,
     test_data_values,
 )
-from modin.pandas.testing import assert_index_equal
 from modin.utils import get_current_execution
 
 NPartitions.put(4)
@@ -576,10 +576,10 @@ def test_loc_setting_single_categorical_column():
 
 def test_loc_multi_index():
     modin_df = pd.read_csv(
-        "modin/pandas/test/data/blah.csv", header=[0, 1, 2, 3], index_col=0
+        "modin/tests/pandas/data/blah.csv", header=[0, 1, 2, 3], index_col=0
     )
     pandas_df = pandas.read_csv(
-        "modin/pandas/test/data/blah.csv", header=[0, 1, 2, 3], index_col=0
+        "modin/tests/pandas/data/blah.csv", header=[0, 1, 2, 3], index_col=0
     )
 
     df_equals(modin_df.loc[1], pandas_df.loc[1])
diff --git a/modin/pandas/test/dataframe/test_iter.py b/modin/tests/pandas/dataframe/test_iter.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_iter.py
rename to modin/tests/pandas/dataframe/test_iter.py
--- a/modin/pandas/test/dataframe/test_iter.py
+++ b/modin/tests/pandas/dataframe/test_iter.py
@@ -21,7 +21,8 @@
 
 import modin.pandas as pd
 from modin.config import NPartitions
-from modin.pandas.test.utils import (
+from modin.pandas.utils import SET_DATAFRAME_ATTRIBUTE_WARNING
+from modin.tests.pandas.utils import (
     RAND_HIGH,
     RAND_LOW,
     create_test_dfs,
@@ -32,8 +33,7 @@
     test_data_keys,
     test_data_values,
 )
-from modin.pandas.utils import SET_DATAFRAME_ATTRIBUTE_WARNING
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 
 NPartitions.put(4)
 
diff --git a/modin/pandas/test/dataframe/test_join_sort.py b/modin/tests/pandas/dataframe/test_join_sort.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_join_sort.py
rename to modin/tests/pandas/dataframe/test_join_sort.py
--- a/modin/pandas/test/dataframe/test_join_sort.py
+++ b/modin/tests/pandas/dataframe/test_join_sort.py
@@ -21,7 +21,7 @@
 import modin.pandas as pd
 from modin.config import Engine, NPartitions, RangePartitioning, StorageFormat
 from modin.pandas.io import to_pandas
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     arg_keys,
     axis_keys,
     axis_values,
@@ -39,7 +39,7 @@
     test_data_keys,
     test_data_values,
 )
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 
 NPartitions.put(4)
 
diff --git a/modin/pandas/test/dataframe/test_map_metadata.py b/modin/tests/pandas/dataframe/test_map_metadata.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_map_metadata.py
rename to modin/tests/pandas/dataframe/test_map_metadata.py
--- a/modin/pandas/test/dataframe/test_map_metadata.py
+++ b/modin/tests/pandas/dataframe/test_map_metadata.py
@@ -20,7 +20,8 @@
 from modin.config import NPartitions, StorageFormat
 from modin.core.dataframe.pandas.metadata import LazyProxyCategoricalDtype
 from modin.core.storage_formats.pandas.utils import split_result_of_axis_func_pandas
-from modin.pandas.test.utils import (
+from modin.pandas.testing import assert_index_equal, assert_series_equal
+from modin.tests.pandas.utils import (
     RAND_HIGH,
     RAND_LOW,
     arg_keys,
@@ -47,8 +48,7 @@
     test_func_keys,
     test_func_values,
 )
-from modin.pandas.testing import assert_index_equal, assert_series_equal
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import get_current_execution
 
 NPartitions.put(4)
diff --git a/modin/pandas/test/dataframe/test_pickle.py b/modin/tests/pandas/dataframe/test_pickle.py
similarity index 97%
rename from modin/pandas/test/dataframe/test_pickle.py
rename to modin/tests/pandas/dataframe/test_pickle.py
--- a/modin/pandas/test/dataframe/test_pickle.py
+++ b/modin/tests/pandas/dataframe/test_pickle.py
@@ -18,7 +18,7 @@
 
 import modin.pandas as pd
 from modin.config import PersistentPickle
-from modin.pandas.test.utils import create_test_dfs, df_equals
+from modin.tests.pandas.utils import create_test_dfs, df_equals
 
 
 @pytest.fixture
diff --git a/modin/pandas/test/dataframe/test_reduce.py b/modin/tests/pandas/dataframe/test_reduce.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_reduce.py
rename to modin/tests/pandas/dataframe/test_reduce.py
--- a/modin/pandas/test/dataframe/test_reduce.py
+++ b/modin/tests/pandas/dataframe/test_reduce.py
@@ -18,7 +18,8 @@
 
 import modin.pandas as pd
 from modin.config import NPartitions, StorageFormat
-from modin.pandas.test.utils import (
+from modin.pandas.testing import assert_series_equal
+from modin.tests.pandas.utils import (
     arg_keys,
     assert_dtypes_equal,
     axis_keys,
@@ -38,7 +39,6 @@
     test_data_large_categorical_dataframe,
     test_data_values,
 )
-from modin.pandas.testing import assert_series_equal
 
 NPartitions.put(4)
 
diff --git a/modin/pandas/test/dataframe/test_udf.py b/modin/tests/pandas/dataframe/test_udf.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_udf.py
rename to modin/tests/pandas/dataframe/test_udf.py
--- a/modin/pandas/test/dataframe/test_udf.py
+++ b/modin/tests/pandas/dataframe/test_udf.py
@@ -19,7 +19,7 @@
 
 import modin.pandas as pd
 from modin.config import MinPartitionSize, NPartitions
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     agg_func_except_keys,
     agg_func_except_values,
     agg_func_keys,
@@ -40,7 +40,7 @@
     udf_func_keys,
     udf_func_values,
 )
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import get_current_execution
 
 NPartitions.put(4)
diff --git a/modin/pandas/test/dataframe/test_window.py b/modin/tests/pandas/dataframe/test_window.py
similarity index 99%
rename from modin/pandas/test/dataframe/test_window.py
rename to modin/tests/pandas/dataframe/test_window.py
--- a/modin/pandas/test/dataframe/test_window.py
+++ b/modin/tests/pandas/dataframe/test_window.py
@@ -18,7 +18,7 @@
 
 import modin.pandas as pd
 from modin.config import NPartitions, StorageFormat
-from modin.pandas.test.utils import (
+from modin.tests.pandas.utils import (
     arg_keys,
     axis_keys,
     axis_values,
diff --git a/modin/test/interchange/dataframe_protocol/__init__.py b/modin/tests/pandas/extensions/__init__.py
similarity index 100%
rename from modin/test/interchange/dataframe_protocol/__init__.py
rename to modin/tests/pandas/extensions/__init__.py
diff --git a/modin/pandas/api/extensions/test/test_dataframe_extensions.py b/modin/tests/pandas/extensions/test_dataframe_extensions.py
similarity index 100%
rename from modin/pandas/api/extensions/test/test_dataframe_extensions.py
rename to modin/tests/pandas/extensions/test_dataframe_extensions.py
diff --git a/modin/pandas/api/extensions/test/test_pd_extensions.py b/modin/tests/pandas/extensions/test_pd_extensions.py
similarity index 100%
rename from modin/pandas/api/extensions/test/test_pd_extensions.py
rename to modin/tests/pandas/extensions/test_pd_extensions.py
diff --git a/modin/pandas/api/extensions/test/test_series_extensions.py b/modin/tests/pandas/extensions/test_series_extensions.py
similarity index 100%
rename from modin/pandas/api/extensions/test/test_series_extensions.py
rename to modin/tests/pandas/extensions/test_series_extensions.py
diff --git a/modin/test/interchange/dataframe_protocol/base/__init__.py b/modin/tests/pandas/integrations/__init__.py
similarity index 100%
rename from modin/test/interchange/dataframe_protocol/base/__init__.py
rename to modin/tests/pandas/integrations/__init__.py
diff --git a/modin/pandas/test/integrations/test_lazy_import.py b/modin/tests/pandas/integrations/test_lazy_import.py
similarity index 100%
rename from modin/pandas/test/integrations/test_lazy_import.py
rename to modin/tests/pandas/integrations/test_lazy_import.py
diff --git a/modin/test/interchange/dataframe_protocol/hdk/__init__.py b/modin/tests/pandas/internals/__init__.py
similarity index 100%
rename from modin/test/interchange/dataframe_protocol/hdk/__init__.py
rename to modin/tests/pandas/internals/__init__.py
diff --git a/modin/pandas/test/internals/test_benchmark_mode.py b/modin/tests/pandas/internals/test_benchmark_mode.py
similarity index 100%
rename from modin/pandas/test/internals/test_benchmark_mode.py
rename to modin/tests/pandas/internals/test_benchmark_mode.py
diff --git a/modin/pandas/test/internals/test_repartition.py b/modin/tests/pandas/internals/test_repartition.py
similarity index 100%
rename from modin/pandas/test/internals/test_repartition.py
rename to modin/tests/pandas/internals/test_repartition.py
diff --git a/modin/pandas/test/test_api.py b/modin/tests/pandas/test_api.py
similarity index 100%
rename from modin/pandas/test/test_api.py
rename to modin/tests/pandas/test_api.py
diff --git a/modin/pandas/test/test_concat.py b/modin/tests/pandas/test_concat.py
similarity index 100%
rename from modin/pandas/test/test_concat.py
rename to modin/tests/pandas/test_concat.py
diff --git a/modin/pandas/test/test_expanding.py b/modin/tests/pandas/test_expanding.py
similarity index 98%
rename from modin/pandas/test/test_expanding.py
rename to modin/tests/pandas/test_expanding.py
--- a/modin/pandas/test/test_expanding.py
+++ b/modin/tests/pandas/test_expanding.py
@@ -17,7 +17,7 @@
 
 import modin.pandas as pd
 from modin.config import NPartitions
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 
 from .utils import (
     create_test_dfs,
diff --git a/modin/pandas/test/test_general.py b/modin/tests/pandas/test_general.py
similarity index 99%
rename from modin/pandas/test/test_general.py
rename to modin/tests/pandas/test_general.py
--- a/modin/pandas/test/test_general.py
+++ b/modin/tests/pandas/test_general.py
@@ -22,7 +22,7 @@
 from modin.config import StorageFormat
 from modin.pandas.io import to_pandas
 from modin.pandas.testing import assert_frame_equal
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import get_current_execution
 
 from .utils import (
diff --git a/modin/pandas/test/test_groupby.py b/modin/tests/pandas/test_groupby.py
similarity index 99%
rename from modin/pandas/test/test_groupby.py
rename to modin/tests/pandas/test_groupby.py
--- a/modin/pandas/test/test_groupby.py
+++ b/modin/tests/pandas/test_groupby.py
@@ -33,7 +33,7 @@
 )
 from modin.pandas.io import from_pandas
 from modin.pandas.utils import is_scalar
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import (
     MODIN_UNNAMED_SERIES_LABEL,
     get_current_execution,
diff --git a/modin/pandas/test/test_io.py b/modin/tests/pandas/test_io.py
similarity index 98%
rename from modin/pandas/test/test_io.py
rename to modin/tests/pandas/test_io.py
--- a/modin/pandas/test/test_io.py
+++ b/modin/tests/pandas/test_io.py
@@ -48,7 +48,7 @@
 )
 from modin.db_conn import ModinDatabaseConnection, UnsupportedDatabaseException
 from modin.pandas.io import from_arrow, from_dask, from_ray, to_pandas
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 
 from .utils import (
     check_file_leaks,
@@ -71,7 +71,7 @@
 from .utils import time_parsing_csv_path
 
 if StorageFormat.get() == "Hdk":
-    from modin.experimental.core.execution.native.implementations.hdk_on_native.test.utils import (
+    from modin.tests.experimental.hdk_on_native.utils import (
         align_datetime_dtypes,
         eval_io,
     )
@@ -349,7 +349,7 @@ def test_read_csv_col_handling(
 
     @pytest.mark.parametrize("usecols", [lambda col_name: col_name in ["a", "b", "e"]])
     def test_from_csv_with_callable_usecols(self, usecols):
-        fname = "modin/pandas/test/data/test_usecols.csv"
+        fname = "modin/tests/pandas/data/test_usecols.csv"
         pandas_df = pandas.read_csv(fname, usecols=usecols)
         modin_df = pd.read_csv(fname, usecols=usecols)
         df_equals(modin_df, pandas_df)
@@ -641,7 +641,7 @@ def test_read_csv_iteration(self, iterator):
 
     @pytest.mark.parametrize("pathlike", [False, True])
     def test_read_csv_encoding_976(self, pathlike):
-        file_name = "modin/pandas/test/data/issue_976.csv"
+        file_name = "modin/tests/pandas/data/issue_976.csv"
         if pathlike:
             file_name = Path(file_name)
         names = [str(i) for i in range(11)]
@@ -921,7 +921,7 @@ def test_read_csv_categories(self):
         eval_io(
             fn_name="read_csv",
             # read_csv kwargs
-            filepath_or_buffer="modin/pandas/test/data/test_categories.csv",
+            filepath_or_buffer="modin/tests/pandas/data/test_categories.csv",
             names=["one", "two"],
             dtype={"one": "int64", "two": "category"},
         )
@@ -1026,7 +1026,7 @@ def test_read_csv_skiprows_names(self, names, skiprows):
         eval_io(
             fn_name="read_csv",
             # read_csv kwargs
-            filepath_or_buffer="modin/pandas/test/data/issue_2239.csv",
+            filepath_or_buffer="modin/tests/pandas/data/issue_2239.csv",
             names=names,
             skiprows=skiprows,
         )
@@ -1069,7 +1069,7 @@ def test_read_csv_newlines_in_quotes(self, nrows, skiprows):
             fn_name="read_csv",
             expected_exception=expected_exception,
             # read_csv kwargs
-            filepath_or_buffer="modin/pandas/test/data/newlines.csv",
+            filepath_or_buffer="modin/tests/pandas/data/newlines.csv",
             nrows=nrows,
             skiprows=skiprows,
             cast_to_str=StorageFormat.get() != "Hdk",
@@ -1087,7 +1087,7 @@ def test_read_csv_skiprows_with_usecols(self, skiprows):
             fn_name="read_csv",
             expected_exception=expected_exception,
             # read_csv kwargs
-            filepath_or_buffer="modin/pandas/test/data/issue_4543.csv",
+            filepath_or_buffer="modin/tests/pandas/data/issue_4543.csv",
             skiprows=skiprows,
             usecols=usecols.keys(),
             dtype=usecols,
@@ -1106,7 +1106,7 @@ def test_read_csv_incorrect_data(self):
         eval_io(
             fn_name="read_csv",
             # read_csv kwargs
-            filepath_or_buffer="modin/pandas/test/data/test_categories.json",
+            filepath_or_buffer="modin/tests/pandas/data/test_categories.json",
         )
 
     @pytest.mark.parametrize(
@@ -1122,7 +1122,7 @@ def test_read_csv_names_neq_num_cols(self, kwargs):
         eval_io(
             fn_name="read_csv",
             # read_csv kwargs
-            filepath_or_buffer="modin/pandas/test/data/issue_2074.csv",
+            filepath_or_buffer="modin/tests/pandas/data/issue_2074.csv",
             **kwargs,
         )
 
@@ -1263,7 +1263,7 @@ def get_internal_df(df):
             partition = read_df._query_compiler._modin_frame._partitions[0][0]
             return partition.to_pandas()
 
-        path = "modin/pandas/test/data/issue_3119.csv"
+        path = "modin/tests/pandas/data/issue_3119.csv"
         read_df = pd.read_csv(path, index_col=0)
         assert get_internal_df(read_df).index.name is None
         read_df = pd.read_csv(path, index_col=[0, 1])
@@ -1349,7 +1349,7 @@ def test_read_csv_1930(self, usecols):
         eval_io(
             fn_name="read_csv",
             # read_csv kwargs
-            filepath_or_buffer="modin/pandas/test/data/issue_1930.csv",
+            filepath_or_buffer="modin/tests/pandas/data/issue_1930.csv",
             names=["c1", "c2", "c3", "c4", "c5"],
             usecols=usecols,
         )
@@ -1982,7 +1982,7 @@ def test_read_parquet_hdfs(self, engine):
         eval_io(
             fn_name="read_parquet",
             # read_parquet kwargs
-            path="modin/pandas/test/data/hdfs.parquet",
+            path="modin/tests/pandas/data/hdfs.parquet",
             engine=engine,
         )
 
@@ -2229,7 +2229,7 @@ def test_read_json_categories(self):
         eval_io(
             fn_name="read_json",
             # read_json kwargs
-            path_or_buf="modin/pandas/test/data/test_categories.json",
+            path_or_buf="modin/tests/pandas/data/test_categories.json",
             dtype={"one": "int64", "two": "category"},
         )
 
@@ -2238,7 +2238,7 @@ def test_read_json_different_columns(self):
             eval_io(
                 fn_name="read_json",
                 # read_json kwargs
-                path_or_buf="modin/pandas/test/data/test_different_columns_in_rows.json",
+                path_or_buf="modin/tests/pandas/data/test_different_columns_in_rows.json",
                 lines=True,
             )
 
@@ -2377,14 +2377,14 @@ def test_read_excel_sheetname_title(self):
         eval_io(
             fn_name="read_excel",
             # read_excel kwargs
-            io="modin/pandas/test/data/excel_sheetname_title.xlsx",
+            io="modin/tests/pandas/data/excel_sheetname_title.xlsx",
             # FIXME: https://github.com/modin-project/modin/issues/7036
             expected_exception=False,
         )
 
     @check_file_leaks
     def test_excel_empty_line(self):
-        path = "modin/pandas/test/data/test_emptyline.xlsx"
+        path = "modin/tests/pandas/data/test_emptyline.xlsx"
         modin_df = pd.read_excel(path)
         assert str(modin_df)
 
@@ -2393,7 +2393,7 @@ def test_read_excel_empty_rows(self):
         # Test parsing empty rows in middle of excel dataframe as NaN values
         eval_io(
             fn_name="read_excel",
-            io="modin/pandas/test/data/test_empty_rows.xlsx",
+            io="modin/tests/pandas/data/test_empty_rows.xlsx",
         )
 
     @check_file_leaks
@@ -2401,7 +2401,7 @@ def test_read_excel_border_rows(self):
         # Test parsing border rows as NaN values in excel dataframe
         eval_io(
             fn_name="read_excel",
-            io="modin/pandas/test/data/test_border_rows.xlsx",
+            io="modin/tests/pandas/data/test_border_rows.xlsx",
         )
 
     @check_file_leaks
@@ -2409,14 +2409,14 @@ def test_read_excel_every_other_nan(self):
         # Test for reading excel dataframe with every other row as a NaN value
         eval_io(
             fn_name="read_excel",
-            io="modin/pandas/test/data/every_other_row_nan.xlsx",
+            io="modin/tests/pandas/data/every_other_row_nan.xlsx",
         )
 
     @check_file_leaks
     def test_read_excel_header_none(self):
         eval_io(
             fn_name="read_excel",
-            io="modin/pandas/test/data/every_other_row_nan.xlsx",
+            io="modin/tests/pandas/data/every_other_row_nan.xlsx",
             header=None,
         )
 
@@ -2438,7 +2438,7 @@ def test_read_excel_sheet_name(self, sheet_name):
         eval_io(
             fn_name="read_excel",
             # read_excel kwargs
-            io="modin/pandas/test/data/modin_error_book.xlsx",
+            io="modin/tests/pandas/data/modin_error_book.xlsx",
             sheet_name=sheet_name,
             # https://github.com/modin-project/modin/issues/5965
             comparator_kwargs={"check_dtypes": False},
@@ -3084,7 +3084,7 @@ def test_read_sas(self):
         eval_io(
             fn_name="read_sas",
             # read_sas kwargs
-            filepath_or_buffer="modin/pandas/test/data/airline.sas7bdat",
+            filepath_or_buffer="modin/tests/pandas/data/airline.sas7bdat",
         )
 
 
diff --git a/modin/pandas/test/test_reshape.py b/modin/tests/pandas/test_reshape.py
similarity index 98%
rename from modin/pandas/test/test_reshape.py
rename to modin/tests/pandas/test_reshape.py
--- a/modin/pandas/test/test_reshape.py
+++ b/modin/tests/pandas/test_reshape.py
@@ -16,7 +16,7 @@
 import pytest
 
 import modin.pandas as pd
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 
 from .utils import df_equals, test_data_values
 
diff --git a/modin/pandas/test/test_rolling.py b/modin/tests/pandas/test_rolling.py
similarity index 100%
rename from modin/pandas/test/test_rolling.py
rename to modin/tests/pandas/test_rolling.py
diff --git a/modin/pandas/test/test_series.py b/modin/tests/pandas/test_series.py
similarity index 99%
rename from modin/pandas/test/test_series.py
rename to modin/tests/pandas/test_series.py
--- a/modin/pandas/test/test_series.py
+++ b/modin/tests/pandas/test_series.py
@@ -31,7 +31,7 @@
 from modin.config import Engine, NPartitions, StorageFormat
 from modin.pandas.io import to_pandas
 from modin.pandas.testing import assert_series_equal
-from modin.test.test_utils import warns_that_defaulting_to_pandas
+from modin.tests.test_utils import warns_that_defaulting_to_pandas
 from modin.utils import get_current_execution, try_cast_to_pandas
 
 from .utils import (
@@ -88,7 +88,7 @@
 )
 
 if StorageFormat.get() != "Hdk":
-    from modin.test.storage_formats.pandas.test_internals import (
+    from modin.tests.core.storage_formats.pandas.test_internals import (
         construct_modin_df_by_scheme,
     )
 
diff --git a/modin/pandas/test/utils.py b/modin/tests/pandas/utils.py
similarity index 99%
rename from modin/pandas/test/utils.py
rename to modin/tests/pandas/utils.py
--- a/modin/pandas/test/utils.py
+++ b/modin/tests/pandas/utils.py
@@ -496,7 +496,7 @@
 COMP_TO_EXT = {"gzip": "gz", "bz2": "bz2", "xz": "xz", "zip": "zip"}
 
 
-time_parsing_csv_path = "modin/pandas/test/data/test_time_parsing.csv"
+time_parsing_csv_path = "modin/tests/pandas/data/test_time_parsing.csv"
 
 
 class CustomIntegerForAddition:
@@ -1596,7 +1596,7 @@ def _make_default_file(nrows=NROWS, ncols=2, force=True, **kwargs):
             if force or not os.path.exists(filename):
                 fwf_data = kwargs.get("fwf_data")
                 if fwf_data is None:
-                    with open("modin/pandas/test/data/test_data.fwf", "r") as fwf_file:
+                    with open("modin/tests/pandas/data/test_data.fwf", "r") as fwf_file:
                         fwf_data = fwf_file.read()
                 with open(filename, "w") as f:
                     f.write(fwf_data)
diff --git a/modin/test/test_docstring_urls.py b/modin/tests/test_docstring_urls.py
similarity index 100%
rename from modin/test/test_docstring_urls.py
rename to modin/tests/test_docstring_urls.py
diff --git a/modin/test/test_envvar_catcher.py b/modin/tests/test_envvar_catcher.py
similarity index 100%
rename from modin/test/test_envvar_catcher.py
rename to modin/tests/test_envvar_catcher.py
diff --git a/modin/test/test_envvar_npartitions.py b/modin/tests/test_envvar_npartitions.py
similarity index 100%
rename from modin/test/test_envvar_npartitions.py
rename to modin/tests/test_envvar_npartitions.py
diff --git a/modin/test/test_executions_api.py b/modin/tests/test_executions_api.py
similarity index 100%
rename from modin/test/test_executions_api.py
rename to modin/tests/test_executions_api.py
diff --git a/modin/test/test_headers.py b/modin/tests/test_headers.py
similarity index 100%
rename from modin/test/test_headers.py
rename to modin/tests/test_headers.py
diff --git a/modin/test/test_logging.py b/modin/tests/test_logging.py
similarity index 100%
rename from modin/test/test_logging.py
rename to modin/tests/test_logging.py
diff --git a/modin/test/test_partition_api.py b/modin/tests/test_partition_api.py
similarity index 99%
rename from modin/test/test_partition_api.py
rename to modin/tests/test_partition_api.py
--- a/modin/test/test_partition_api.py
+++ b/modin/tests/test_partition_api.py
@@ -20,7 +20,7 @@
 from modin.core.execution.dispatching.factories.dispatcher import FactoryDispatcher
 from modin.distributed.dataframe.pandas import from_partitions, unwrap_partitions
 from modin.pandas.indexing import compute_sliced_len
-from modin.pandas.test.utils import df_equals, test_data
+from modin.tests.pandas.utils import df_equals, test_data
 
 PartitionClass = (
     FactoryDispatcher.get_factory().io_cls.frame_cls._partition_mgr_cls._partition_class
diff --git a/modin/test/test_utils.py b/modin/tests/test_utils.py
similarity index 98%
rename from modin/test/test_utils.py
rename to modin/tests/test_utils.py
--- a/modin/test/test_utils.py
+++ b/modin/tests/test_utils.py
@@ -22,7 +22,7 @@
 import modin.pandas as pd
 import modin.utils
 from modin.error_message import ErrorMessage
-from modin.pandas.test.utils import create_test_dfs
+from modin.tests.pandas.utils import create_test_dfs
 
 
 # Note: classes below are used for purely testing purposes - they
@@ -297,7 +297,7 @@ def test_warns_that_defaulting_to_pandas():
 
 def test_assert_dtypes_equal():
     """Verify that `assert_dtypes_equal` from test utils works correctly (raises an error when it has to)."""
-    from modin.pandas.test.utils import assert_dtypes_equal
+    from modin.tests.pandas.utils import assert_dtypes_equal
 
     # Serieses with equal dtypes
     sr1, sr2 = pd.Series([1.0]), pandas.Series([1.0])