testcontainers / testcontainers/testcontainers-python
Provide generic DockerContainer with init attributes
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 2.3k
- Forks
- 386
- Merge moyen
- 4 h 40 min
- PR mergées (30 j)
- 1
Description
First I want to thank you for this very nice and convenient library.
Background
I am using the library for smoke tests for microservices. In these tests I spin up a container and make sure I can e.g., fetch an endpoint and see that the container is built and starts correctly.
The library provides all convenient methods, except for a way to set e.g., ports and env variables in the context manager. To solve this I have subclassed testcontainers.core.container.DockerContainer into a class as below:
from typing import Any
import testcontainers.core.container
class ContainerContext(testcontainers.core.container.DockerContainer):
def __init__(
self, image: str, ports: list[int], env_vars: dict[str, str], **kwargs: Any
) -> None:
super().__init__(image, **kwargs)
self.with_exposed_ports(*ports)
for env, value in env_vars.items():
self.with_env(env, value)
and use it as
import requests
def test_smoke():
with container_context(
"my_service_image",
ports=[8000],
env_vars={"SOME_ENV_SETTINGS": "some_value", "SOME_ENV_SETTINGS2": "other_value"},
) as con:
r = requests.get(
f"http://{con.get_container_host_ip()}:{con.get_exposed_port(8000)}"
)
assert r
Proposal
- Include a generic container class where all
name,ports,env,volumes, … can be set as init variables.
I saw #114 that removed the previous GenericContainer but I don't see a motivation why it was done and why it could not be extended.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Examinez testcontainers.core.container.DockerContainer ainsi que la suppression précédente de GenericContainer discutée dans #114. Comparez les attributs d'initialisation demandés —name, ports, env et volumes— avec l'API de conteneur existante, et considérez la proposition comme terminée lorsqu'un conteneur générique peut configurer ces valeurs lors de l'initialisation sans sous-classement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- docker, python
- Domaine
- devops, testing
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100