This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master by this push:
new 920bce40cf Test refactoring
920bce40cf is described below
commit 920bce40cf6d2e37dbcd0209821ee100cba1d504
Author: Stephen Mallette <[email protected]>
AuthorDate: Tue Feb 17 10:37:32 2026 -0500
Test refactoring
Couldn't property merge 4ce4cdb58af6c396205a93cb0c39a1c6768737a9 to master
so used merge strategy "ours" and did it manually with this change. CTR
---
gremlin-python/AGENTS.md | 3 +++
gremlin-python/build/generate.groovy | 2 +-
gremlin-python/docker-compose.yml | 26 ++++++++++++++++------
gremlin-python/pom.xml | 4 ++++
gremlin-python/src/main/python/pyproject.toml | 3 ++-
.../{radish => tests/feature}/feature_steps.py | 0
.../python/{radish => tests/feature}/gremlin.py | 0
.../python/{radish => tests/feature}/terrain.py | 5 +++++
.../main/python/{radish => tests/feature}/utils.py | 0
.../python/tests/{ => integration}/__init__.py | 4 +---
.../python/tests/{ => integration}/conftest.py | 0
.../tests/{ => integration}/driver/__init__.py | 4 +---
.../tests/{ => integration}/driver/test_auth.py | 0
.../tests/{ => integration}/driver/test_client.py | 0
.../driver/test_driver_remote_connection.py | 0
.../test_driver_remote_connection_threaded.py | 0
.../{ => integration}/driver/test_protocol.py | 0
.../{ => integration}/driver/test_serializer.py | 0
.../driver/test_web_socket_client_behavior.py | 0
.../{structure => integration/process}/__init__.py | 8 +++----
.../tests/{ => integration}/process/test_dsl.py | 0
.../{ => integration}/process/test_traversal.py | 0
.../{process => integration/structure}/__init__.py | 8 +++----
.../{ => integration/structure/io}/__init__.py | 4 +---
.../structure/io/test_functionalityio.py | 0
.../src/main/python/tests/structure/io/__init__.py | 20 -----------------
.../src/main/python/tests/{ => unit}/__init__.py | 4 +---
.../python/tests/{ => unit/process}/__init__.py | 4 +---
.../tests/{ => unit}/process/test_gremlin_lang.py | 0
.../tests/{ => unit}/process/test_strategies.py | 0
.../python/tests/{ => unit/structure}/__init__.py | 4 +---
.../tests/{ => unit/structure/io}/__init__.py | 4 +---
.../python/tests/{ => unit}/structure/io/model.py | 0
.../{ => unit}/structure/io/test_graphbinaryV4.py | 0
.../structure/io/test_graphbinaryv4model.py | 0
.../{ => unit}/structure/io/test_graphsonV4.py | 0
.../structure/io/test_graphsonv4model.py | 0
.../tests/{ => unit}/structure/io/test_util.py | 0
.../tests/{ => unit}/structure/test_graph.py | 0
.../main/python/tests/{ => unit}/test_statics.py | 0
40 files changed, 47 insertions(+), 60 deletions(-)
diff --git a/gremlin-python/AGENTS.md b/gremlin-python/AGENTS.md
index 0021750bc8..7bd6aaff84 100644
--- a/gremlin-python/AGENTS.md
+++ b/gremlin-python/AGENTS.md
@@ -81,7 +81,10 @@ To accurately evaluate the results, follow this strict
hierarchy:
2. **Verify via XML Reports**: If the build fails (non-zero exit) you
**must** inspect the JUnit XML reports in
`gremlin-python/target/python3/python-reports/`:
* `TEST-native-python.xml` (Unit/Integration tests)
* `feature-graphbinary-result.xml` (Feature tests - GraphBinary)
+ * `feature-graphbinary-params-result.xml` (Feature tests - GraphBinary
parameterized)
+ * `feature-graphbinary-bulked-result.xml` (Feature tests - GraphBinary
bulked)
* `feature-graphson-result.xml` (Feature tests - GraphSON)
+ * `feature-graphson-params-result.xml` (Feature tests - GraphSON
parameterized)
Feature test XML reports will not be present if the unit/integration tests
fail.
diff --git a/gremlin-python/build/generate.groovy
b/gremlin-python/build/generate.groovy
index ae4e6fc425..3d08f1c19c 100644
--- a/gremlin-python/build/generate.groovy
+++ b/gremlin-python/build/generate.groovy
@@ -24,7 +24,7 @@ import
org.apache.tinkerpop.gremlin.language.corpus.FeatureReader
import java.nio.file.Paths
// file is overwritten on each generation
-radishGremlinFile = new
File("${projectBaseDir}/gremlin-python/src/main/python/radish/gremlin.py")
+radishGremlinFile = new
File("${projectBaseDir}/gremlin-python/src/main/python/tests/feature/gremlin.py")
// assumes globally unique scenario names for keys with list of Gremlin
traversals as they appear
gremlins = FeatureReader.parseGrouped(Paths.get("${projectBaseDir}",
"gremlin-test", "src", "main", "resources", "org", "apache", "tinkerpop",
"gremlin", "test", "features").toString())
diff --git a/gremlin-python/docker-compose.yml
b/gremlin-python/docker-compose.yml
index ec618935c2..3b8a8a851e 100644
--- a/gremlin-python/docker-compose.yml
+++ b/gremlin-python/docker-compose.yml
@@ -56,15 +56,27 @@ services:
-
GREMLIN_SERVER_BASIC_AUTH_URL=https://gremlin-server-test-python:{}/gremlin
- IO_TEST_DIRECTORY=/python_app/gremlin-test/graphbinary/
- IO_TEST_DIRECTORY_GRAPHSON=/python_app/gremlin-test/graphson/
+ - PYTEST_ARGS=${PYTEST_ARGS:-}
+ - RADISH_ARGS=${RADISH_ARGS:-}
working_dir: /python_app
command: >
- bash -c "pip install .[test,kerberos]
- && pytest
- && radish -f dots -e -t -b ./radish ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0'
--user-data='bulked=true'
- && radish -f dots -e -t -b ./radish ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0'
--user-data='parameterize=true'
- && radish -f dots -e -t -b ./radish ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0'
- && radish -f dots -e -t -b ./radish ./gremlin-test
--user-data='serializer=application/vnd.gremlin-v4.0+json'
--user-data='parameterize=true'
- && radish -f dots -e -t -b ./radish ./gremlin-test
--user-data='serializer=application/vnd.gremlin-v4.0+json'
+ bash -c "pip install .[test]
+ && if [ -z \"$PYTEST_ARGS\" ] && [ -z \"$RADISH_ARGS\" ]; then
+ pytest &&
+ radish --junit-xml
python-reports/feature-graphbinary-bulked-result.xml -f dots -e -t -b
./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0'
--user-data='bulked=true' &&
+ radish --junit-xml
python-reports/feature-graphbinary-params-result.xml -f dots -e -t -b
./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0'
--user-data='parameterize=true' &&
+ radish --junit-xml python-reports/feature-graphbinary-result.xml -f
dots -e -t -b ./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0' &&
+ radish --junit-xml python-reports/feature-graphson-params-result.xml
-f dots -e -t -b ./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.gremlin-v4.0+json'
--user-data='parameterize=true' &&
+ radish --junit-xml python-reports/feature-graphson-result.xml -f dots
-e -t -b ./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.gremlin-v4.0+json' ;
+ elif [ -n \"$PYTEST_ARGS\" ]; then
+ pytest $PYTEST_ARGS ;
+ elif [ -n \"$RADISH_ARGS\" ]; then
+ radish --junit-xml
python-reports/feature-graphbinary-bulked-result.xml -f dots -e -t -b
./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0'
--user-data='bulked=true' $RADISH_ARGS &&
+ radish --junit-xml
python-reports/feature-graphbinary-params-result.xml -f dots -e -t -b
./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0'
--user-data='parameterize=true' $RADISH_ARGS &&
+ radish --junit-xml python-reports/feature-graphbinary-result.xml -f
dots -e -t -b ./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.graphbinary-v4.0' $RADISH_ARGS &&
+ radish --junit-xml python-reports/feature-graphson-params-result.xml
-f dots -e -t -b ./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.gremlin-v4.0+json'
--user-data='parameterize=true' $RADISH_ARGS &&
+ radish --junit-xml python-reports/feature-graphson-result.xml -f dots
-e -t -b ./tests/feature ./gremlin-test
--user-data='serializer=application/vnd.gremlin-v4.0+json' $RADISH_ARGS ;
+ fi
&& pip install .
&& echo 'Running examples...'
&& python3 examples/basic_gremlin.py
diff --git a/gremlin-python/pom.xml b/gremlin-python/pom.xml
index 9929c3c79e..db8d3ebe23 100644
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@ -31,6 +31,8 @@ limitations under the License.
<skipTests>${maven.test.skip}</skipTests>
<gremlin.server.dir>${project.parent.basedir}/gremlin-server</gremlin.server.dir>
<tinkerpop.root.dir>${project.parent.basedir}</tinkerpop.root.dir>
+ <pytestArgs></pytestArgs>
+ <radishArgs></radishArgs>
</properties>
<build>
<directory>${basedir}/target</directory>
@@ -169,6 +171,8 @@ limitations under the License.
<env key="GREMLIN_SERVER"
value="${project.version}"/>
<env key="ABS_PROJECT_HOME"
value="${project.basedir}/../"/>
<env key="BUILD_DIR"
value="${project.build.directory}/python3"/>
+ <env key="PYTEST_ARGS"
value="${pytestArgs}"/>
+ <env key="RADISH_ARGS"
value="${radishArgs}"/>
<arg line="compose up --build
--abort-on-container-exit gremlin-server-test-python
gremlin-python-integration-tests"/>
</exec>
<exec executable="docker"
failonerror="true">
diff --git a/gremlin-python/src/main/python/pyproject.toml
b/gremlin-python/src/main/python/pyproject.toml
index 8560961174..81e8d0d60a 100644
--- a/gremlin-python/src/main/python/pyproject.toml
+++ b/gremlin-python/src/main/python/pyproject.toml
@@ -52,6 +52,7 @@ ujson = ["ujson>=2.0.0"]
test = [
"pytest>=6.2.5,<8.0.0",
"radish-bdd==0.18.2",
+ "lxml==5.3.0",
"PyHamcrest>=1.9.0,<3.0.0",
"PyYAML>=5.3"
]
@@ -59,7 +60,7 @@ test = [
[tool.pytest.ini_options]
addopts = "--junitxml=./python-reports/TEST-native-python.xml -sv"
norecursedirs = [".*", "build", "dist", "CVS", "_darcs", "{arch}", "*.egg",
"lib", "lib64"]
-testpaths = ["tests"]
+testpaths = ["tests/unit","tests/integration"]
[tool.setuptools.dynamic]
version = {attr = "gremlin_python.__version__"}
diff --git a/gremlin-python/src/main/python/radish/feature_steps.py
b/gremlin-python/src/main/python/tests/feature/feature_steps.py
similarity index 100%
rename from gremlin-python/src/main/python/radish/feature_steps.py
rename to gremlin-python/src/main/python/tests/feature/feature_steps.py
diff --git a/gremlin-python/src/main/python/radish/gremlin.py
b/gremlin-python/src/main/python/tests/feature/gremlin.py
similarity index 100%
rename from gremlin-python/src/main/python/radish/gremlin.py
rename to gremlin-python/src/main/python/tests/feature/gremlin.py
diff --git a/gremlin-python/src/main/python/radish/terrain.py
b/gremlin-python/src/main/python/tests/feature/terrain.py
similarity index 97%
rename from gremlin-python/src/main/python/radish/terrain.py
rename to gremlin-python/src/main/python/tests/feature/terrain.py
index d7d58e6c83..4feed13091 100644
--- a/gremlin-python/src/main/python/radish/terrain.py
+++ b/gremlin-python/src/main/python/tests/feature/terrain.py
@@ -24,6 +24,11 @@ from gremlin_python.driver import serializer
from gremlin_python.driver.driver_remote_connection import
DriverRemoteConnection
from radish import before, after, world
+import warnings
+
+# Disable DeprecationWarnings globally for radish runs
+warnings.filterwarnings("ignore", category=DeprecationWarning)
+
outV = __.out_v
label = __.label
inV = __.in_v
diff --git a/gremlin-python/src/main/python/radish/utils.py
b/gremlin-python/src/main/python/tests/feature/utils.py
similarity index 100%
rename from gremlin-python/src/main/python/radish/utils.py
rename to gremlin-python/src/main/python/tests/feature/utils.py
diff --git a/gremlin-python/src/main/python/tests/__init__.py
b/gremlin-python/src/main/python/tests/integration/__init__.py
similarity index 92%
copy from gremlin-python/src/main/python/tests/__init__.py
copy to gremlin-python/src/main/python/tests/integration/__init__.py
index 07a1eb1fa8..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/__init__.py
+++ b/gremlin-python/src/main/python/tests/integration/__init__.py
@@ -15,6 +15,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/conftest.py
b/gremlin-python/src/main/python/tests/integration/conftest.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/conftest.py
rename to gremlin-python/src/main/python/tests/integration/conftest.py
diff --git a/gremlin-python/src/main/python/tests/driver/__init__.py
b/gremlin-python/src/main/python/tests/integration/driver/__init__.py
similarity index 92%
rename from gremlin-python/src/main/python/tests/driver/__init__.py
rename to gremlin-python/src/main/python/tests/integration/driver/__init__.py
index 07a1eb1fa8..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/driver/__init__.py
+++ b/gremlin-python/src/main/python/tests/integration/driver/__init__.py
@@ -15,6 +15,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/driver/test_auth.py
b/gremlin-python/src/main/python/tests/integration/driver/test_auth.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/driver/test_auth.py
rename to gremlin-python/src/main/python/tests/integration/driver/test_auth.py
diff --git a/gremlin-python/src/main/python/tests/driver/test_client.py
b/gremlin-python/src/main/python/tests/integration/driver/test_client.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/driver/test_client.py
rename to gremlin-python/src/main/python/tests/integration/driver/test_client.py
diff --git
a/gremlin-python/src/main/python/tests/driver/test_driver_remote_connection.py
b/gremlin-python/src/main/python/tests/integration/driver/test_driver_remote_connection.py
similarity index 100%
rename from
gremlin-python/src/main/python/tests/driver/test_driver_remote_connection.py
rename to
gremlin-python/src/main/python/tests/integration/driver/test_driver_remote_connection.py
diff --git
a/gremlin-python/src/main/python/tests/driver/test_driver_remote_connection_threaded.py
b/gremlin-python/src/main/python/tests/integration/driver/test_driver_remote_connection_threaded.py
similarity index 100%
rename from
gremlin-python/src/main/python/tests/driver/test_driver_remote_connection_threaded.py
rename to
gremlin-python/src/main/python/tests/integration/driver/test_driver_remote_connection_threaded.py
diff --git a/gremlin-python/src/main/python/tests/driver/test_protocol.py
b/gremlin-python/src/main/python/tests/integration/driver/test_protocol.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/driver/test_protocol.py
rename to
gremlin-python/src/main/python/tests/integration/driver/test_protocol.py
diff --git a/gremlin-python/src/main/python/tests/driver/test_serializer.py
b/gremlin-python/src/main/python/tests/integration/driver/test_serializer.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/driver/test_serializer.py
rename to
gremlin-python/src/main/python/tests/integration/driver/test_serializer.py
diff --git
a/gremlin-python/src/main/python/tests/driver/test_web_socket_client_behavior.py
b/gremlin-python/src/main/python/tests/integration/driver/test_web_socket_client_behavior.py
similarity index 100%
rename from
gremlin-python/src/main/python/tests/driver/test_web_socket_client_behavior.py
rename to
gremlin-python/src/main/python/tests/integration/driver/test_web_socket_client_behavior.py
diff --git a/gremlin-python/src/main/python/tests/structure/__init__.py
b/gremlin-python/src/main/python/tests/integration/process/__init__.py
similarity index 92%
rename from gremlin-python/src/main/python/tests/structure/__init__.py
rename to gremlin-python/src/main/python/tests/integration/process/__init__.py
index 1ebbeba44a..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/structure/__init__.py
+++ b/gremlin-python/src/main/python/tests/integration/process/__init__.py
@@ -6,15 +6,13 @@
# 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.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/process/test_dsl.py
b/gremlin-python/src/main/python/tests/integration/process/test_dsl.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/process/test_dsl.py
rename to gremlin-python/src/main/python/tests/integration/process/test_dsl.py
diff --git a/gremlin-python/src/main/python/tests/process/test_traversal.py
b/gremlin-python/src/main/python/tests/integration/process/test_traversal.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/process/test_traversal.py
rename to
gremlin-python/src/main/python/tests/integration/process/test_traversal.py
diff --git a/gremlin-python/src/main/python/tests/process/__init__.py
b/gremlin-python/src/main/python/tests/integration/structure/__init__.py
similarity index 92%
rename from gremlin-python/src/main/python/tests/process/__init__.py
rename to gremlin-python/src/main/python/tests/integration/structure/__init__.py
index 1ebbeba44a..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/process/__init__.py
+++ b/gremlin-python/src/main/python/tests/integration/structure/__init__.py
@@ -6,15 +6,13 @@
# 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.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/__init__.py
b/gremlin-python/src/main/python/tests/integration/structure/io/__init__.py
similarity index 92%
copy from gremlin-python/src/main/python/tests/__init__.py
copy to
gremlin-python/src/main/python/tests/integration/structure/io/__init__.py
index 07a1eb1fa8..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/__init__.py
+++ b/gremlin-python/src/main/python/tests/integration/structure/io/__init__.py
@@ -15,6 +15,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git
a/gremlin-python/src/main/python/tests/structure/io/test_functionalityio.py
b/gremlin-python/src/main/python/tests/integration/structure/io/test_functionalityio.py
similarity index 100%
rename from
gremlin-python/src/main/python/tests/structure/io/test_functionalityio.py
rename to
gremlin-python/src/main/python/tests/integration/structure/io/test_functionalityio.py
diff --git a/gremlin-python/src/main/python/tests/structure/io/__init__.py
b/gremlin-python/src/main/python/tests/structure/io/__init__.py
deleted file mode 100644
index 1ebbeba44a..0000000000
--- a/gremlin-python/src/main/python/tests/structure/io/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF 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.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/__init__.py
b/gremlin-python/src/main/python/tests/unit/__init__.py
similarity index 92%
copy from gremlin-python/src/main/python/tests/__init__.py
copy to gremlin-python/src/main/python/tests/unit/__init__.py
index 07a1eb1fa8..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/__init__.py
+++ b/gremlin-python/src/main/python/tests/unit/__init__.py
@@ -15,6 +15,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/__init__.py
b/gremlin-python/src/main/python/tests/unit/process/__init__.py
similarity index 92%
copy from gremlin-python/src/main/python/tests/__init__.py
copy to gremlin-python/src/main/python/tests/unit/process/__init__.py
index 07a1eb1fa8..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/__init__.py
+++ b/gremlin-python/src/main/python/tests/unit/process/__init__.py
@@ -15,6 +15,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/process/test_gremlin_lang.py
b/gremlin-python/src/main/python/tests/unit/process/test_gremlin_lang.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/process/test_gremlin_lang.py
rename to gremlin-python/src/main/python/tests/unit/process/test_gremlin_lang.py
diff --git a/gremlin-python/src/main/python/tests/process/test_strategies.py
b/gremlin-python/src/main/python/tests/unit/process/test_strategies.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/process/test_strategies.py
rename to gremlin-python/src/main/python/tests/unit/process/test_strategies.py
diff --git a/gremlin-python/src/main/python/tests/__init__.py
b/gremlin-python/src/main/python/tests/unit/structure/__init__.py
similarity index 92%
copy from gremlin-python/src/main/python/tests/__init__.py
copy to gremlin-python/src/main/python/tests/unit/structure/__init__.py
index 07a1eb1fa8..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/__init__.py
+++ b/gremlin-python/src/main/python/tests/unit/structure/__init__.py
@@ -15,6 +15,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/__init__.py
b/gremlin-python/src/main/python/tests/unit/structure/io/__init__.py
similarity index 92%
rename from gremlin-python/src/main/python/tests/__init__.py
rename to gremlin-python/src/main/python/tests/unit/structure/io/__init__.py
index 07a1eb1fa8..18b1704ee1 100644
--- a/gremlin-python/src/main/python/tests/__init__.py
+++ b/gremlin-python/src/main/python/tests/unit/structure/io/__init__.py
@@ -15,6 +15,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+#
\ No newline at end of file
diff --git a/gremlin-python/src/main/python/tests/structure/io/model.py
b/gremlin-python/src/main/python/tests/unit/structure/io/model.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/structure/io/model.py
rename to gremlin-python/src/main/python/tests/unit/structure/io/model.py
diff --git
a/gremlin-python/src/main/python/tests/structure/io/test_graphbinaryV4.py
b/gremlin-python/src/main/python/tests/unit/structure/io/test_graphbinaryV4.py
similarity index 100%
rename from
gremlin-python/src/main/python/tests/structure/io/test_graphbinaryV4.py
rename to
gremlin-python/src/main/python/tests/unit/structure/io/test_graphbinaryV4.py
diff --git
a/gremlin-python/src/main/python/tests/structure/io/test_graphbinaryv4model.py
b/gremlin-python/src/main/python/tests/unit/structure/io/test_graphbinaryv4model.py
similarity index 100%
rename from
gremlin-python/src/main/python/tests/structure/io/test_graphbinaryv4model.py
rename to
gremlin-python/src/main/python/tests/unit/structure/io/test_graphbinaryv4model.py
diff --git
a/gremlin-python/src/main/python/tests/structure/io/test_graphsonV4.py
b/gremlin-python/src/main/python/tests/unit/structure/io/test_graphsonV4.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/structure/io/test_graphsonV4.py
rename to
gremlin-python/src/main/python/tests/unit/structure/io/test_graphsonV4.py
diff --git
a/gremlin-python/src/main/python/tests/structure/io/test_graphsonv4model.py
b/gremlin-python/src/main/python/tests/unit/structure/io/test_graphsonv4model.py
similarity index 100%
rename from
gremlin-python/src/main/python/tests/structure/io/test_graphsonv4model.py
rename to
gremlin-python/src/main/python/tests/unit/structure/io/test_graphsonv4model.py
diff --git a/gremlin-python/src/main/python/tests/structure/io/test_util.py
b/gremlin-python/src/main/python/tests/unit/structure/io/test_util.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/structure/io/test_util.py
rename to gremlin-python/src/main/python/tests/unit/structure/io/test_util.py
diff --git a/gremlin-python/src/main/python/tests/structure/test_graph.py
b/gremlin-python/src/main/python/tests/unit/structure/test_graph.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/structure/test_graph.py
rename to gremlin-python/src/main/python/tests/unit/structure/test_graph.py
diff --git a/gremlin-python/src/main/python/tests/test_statics.py
b/gremlin-python/src/main/python/tests/unit/test_statics.py
similarity index 100%
rename from gremlin-python/src/main/python/tests/test_statics.py
rename to gremlin-python/src/main/python/tests/unit/test_statics.py