testcontainers-python icon indicating copy to clipboard operation
testcontainers-python copied to clipboard

Feature: other ways to configure than the `.testcontainers.properties` in Home

Open Lenormju opened this issue 2 months ago • 1 comments

What are you trying to do?

I want to run my tests, which rely on Test Containers, on my CI. But I don't have the rights to edit the runner's profile home directory (read-only). So I would like to be able to provide a .testcontainers.properties elsewhere, or from environment variables.

This seems to be possible in the Java version, based on this docstring in the Python version :

Read the .testcontainers.properties for settings. (see the Java implementation for details) Currently we only support the ~/.testcontainers.properties but may extend to per-project variables later. :return: the merged properties from the sources.

But (see below) it relies on the Java classpath , and I don't think it would be relevant to use the pythonpath for that on Python's side. So I am unsure how to proceed towards per-project (or arbitrarily-located) properties files.

But using environment variables should be straightforward.

Why should it be done this way?

Parity with Java implementation, and flexibility.

Other references:

From the Java documentation :

The configuration will be loaded from multiple locations. Properties are considered in the following order:

  1. Environment variables
  2. .testcontainers.properties in user's home folder. Example locations:
  • Linux: /home/myuser/.testcontainers.properties
  • Windows: C:/Users/myuser/.testcontainers.properties
  • macOS: /Users/myuser/.testcontainers.properties
  1. testcontainers.properties on the classpath. Note that when using environment variables, configuration property names should be set in upper case with underscore separators, preceded by TESTCONTAINERS_ - e.g. checks.disable becomes TESTCONTAINERS_CHECKS_DISABLE.

Next steps

Does it seem relevant to you ? Would you be interested I contribute a PR for it ?

Lenormju avatar Oct 15 '25 09:10 Lenormju

lets discuss a potential mechanism for this here. I think this is unlikely unless we can come up with something that seems good. maybe we can agree on a prefix within the python path or something but we would have to validate that it doesnt violate some other fundamental assumption about python imports/packages - and I would want to validate it with the opinions of the wider python community (or whatever access we have to it with people who read these issues). At present, this seems to me to be a limitation of python itself so I am extremely cautious about addresssing here.

alexanderankin avatar Oct 15 '25 16:10 alexanderankin