testcontainers-python VS minio

Compare testcontainers-python vs minio and see what are their differences.

testcontainers-python

Testcontainers is a Python library that providing a friendly API to run Docker container. It is designed to create runtime environment to use during your automatic tests. (by testcontainers)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
testcontainers-python minio
8 100
1,326 44,434
5.5% 1.6%
9.0 9.9
11 days ago about 22 hours ago
Python Go
Apache License 2.0 GNU Affero General Public License v3.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

testcontainers-python

Posts with mentions or reviews of testcontainers-python. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-08.
  • Mock unit test an API that uses postgres or integration test API with a "test" database?
    5 projects | /r/node | 8 Dec 2023
    For later stuff, I tend to go all the way, have a separate database that gets seeded, all tests are performed against it, then it gets shut down. Testcontainers work well with this.
  • Is this really what I have to do to test?
    1 project | /r/FastAPI | 3 Dec 2023
  • Ask HN: I have 10 yrs of Exp. Failed 4 takehome projects. What am I doing wrong?
    7 projects | news.ycombinator.com | 11 Jul 2023
    > ...

    I think this is where we're talking past each other, so let me explain more of how I see the problem -- the solution I have in mind is serializing the URL and using ONE call to INCR (https://redis.io/commands/incr/) on the ingest side.

    There is a lot you can do with the data storage pattern to make other operations more efficient, but on the stats side, the most basic way you can do it is to scan

    I will concede that given that we know the data should fit in memory (otherwise you just crash) your approach gives you O(N) retrieval time and it's definitely superior to not have to do that on the python side (and python just streaming the response through). I am comfortable optimizing in-API computation, so I don't think it's a problem.

    Here's what I mean -- you can actually solve the ordering problem in O(N) + O(M) time by keeping track of the max you've seen and building a sparse array and running through every single index from max to zero. It's overkill, but it's generally referred to as a counting sort:

    https://ebrary.net/81651/geography/sorting_algorithms

    This is overkill, clearly, and I will concede that ZSET is lighter and easier to get right than this.

    > You linked? Where? I'd like to know about any library that will do this. Tell me of any library that does integration tests that spins up infrastructure for you. The only one closest I can think of that you can run locally is anything that would use docker-compose or some other IAC language that controls containers. I honestly don't think any popular ones exist.

    https://testcontainers-python.readthedocs.io/en/latest/

    I am very sure that I linked that, but in the case I didn't, here it is again -- hope you find it useful.

    > No way I'm going to assume the user has redis installed on his local machine. Many devs don't. It's all remote development for them or everything lives in containers.

  • What we learned after I deleted the main production database by mistake
    1 project | /r/dataengineering | 18 Sep 2022
    Have a script for spinning up an identical database model in a docker container with your DB of choice. Even nicer than the manual route is depending on your language there's normally some sort of "testcontainers" type library (e.g in Java world https://www.testcontainers.org/ or in PYthon world https://github.com/testcontainers/testcontainers-python) that allows you to run a test that automatically spins up a container then you can use the network connection and run tests against it. E.g If I was testing a postgres integration my test would look like
  • Python/testcontainers
    1 project | /r/Python | 15 Mar 2022
    I have been using TestContainers for my Java projects for a while now with great success and my plan is to use it for some Python projects. I notice that the https://github.com/testcontainers/testcontainers-python project doesn't seem to be under active development. Are there any alternatives out there the community is using/developing?
  • orchestrating contaiers for testing?
    3 projects | /r/learnpython | 17 Jan 2022
    - https://github.com/praekeltfoundation/seaworthy but you have to recreate a manifest with code. Not ideal for mildly complex stuff. 3+years was last commit :(( - https://github.com/testcontainers/testcontainers-python which is weirdly specific to certain container images. Again, not working off a manifest (I think), 1 months since last commit. :( - https://github.com/vapor-ware/kubetest which uses kubernetes(k8s) manifests and integrates with pyTest. Last commit 10 month ago.
  • The absolute worst but common anti-pattern that no one talks about
    4 projects | /r/ExperiencedDevs | 9 Oct 2021
    Buddy, let me juice it up even more: https://github.com/testcontainers/testcontainers-python
  • Hazelcast, from Embedded to Client-Server
    4 projects | dev.to | 16 Apr 2021
    Those are great options if you're developing in Java, but all is not lost if you aren't. Containerization can help us a lot! For example, the TestContainers project is available in all stack that Hazelcast support: Python developers can easily leverage the Python project to set up a local Hazelcast cluster quickly, Go developers the Go project, C# developers the .Net project, etc.

minio

Posts with mentions or reviews of minio. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-05-05.
  • JuiceFS 1.2 Beta 1: Gateway Upgrade, Enhanced Multi-User Permission Management
    2 projects | dev.to | 5 May 2024
    The core service of JuiceFS Gateway is to expose the POSIX file system via the S3 API. Before v1.2, we integrated the MinIO Gateway module into our code. This module was based on the Apache license. This integration made JuiceFS operations similar to MinIO's native command minio gateway NAS. For users, JuiceFS could be seen as an implementation of MinIO Gateway. MinIO's other backend implementations include NAS and Hadoop.
  • A Distributed File System in Go Cut Average Metadata Memory Usage to 100 Bytes
    2 projects | news.ycombinator.com | 22 Feb 2024
    Looks like minio added this in 2022:

    https://github.com/minio/minio/pull/15433

  • Simulate multi-nodes configuration
    1 project | /r/minio | 6 Dec 2023
    We have this example of docker compose you can adapt to be larger https://github.com/minio/minio/blob/master/docs/orchestration/docker-compose/docker-compose.yaml
  • Ask HN: I have 10 yrs of Exp. Failed 4 takehome projects. What am I doing wrong?
    7 projects | news.ycombinator.com | 11 Jul 2023
    >Again, here you seem to be arguing against a strawman that doesn't know that blocking the IO loop is bad. Try arguing against one that knows ways to work around that. This is why I'm saying this rule isn't true. Extensive computation on single-threaded "scripting" languages is possible (and even if it wasn't, punt it off to a remote pool of workers, which could also be NodeJS!).

    Very rare to find a rule that's absolutely true.. I clearly stated exceptions to the rule (which you repeated) but the generality is still true.

    Threading in nodejs is new and didn't exist since the last time I touched it. It looks like it's not the standard use case as google searches still have websites with titles saying node is single threaded everywhere. The only way I can see this being done is multiple Processes (meaning each with a copy of v8) using OS shared memory as IPC and they're just calling it threads. It will take a shit load of work to make v8 actually multi-threaded.

    Processes are expensive so you can't really follow this model per request. And we stopped following threading per request over a decade ago.

    Again these are exceptions to the rule, from what I'm reading Nodejs is normally still single threaded with a fixed number of worker processes that are called "threads". Under this my general rule is still generally true: backend engineering does no typically involve writing non blocking code and offloading compute to other sources. Again, there are exceptions but as I stated before these exceptions are rare.

    >Here's what I mean -- you can actually solve the ordering problem in O(N) + O(M) time by keeping track of the max you've seen and building a sparse array and running through every single index from max to zero. It's overkill, but it's generally referred to as a counting sort:

    Oh come on. We both know these sorts won't work. These large numbers will throw off memory. Imagine 3 routes. One route gets 352 hits, another route gets 400 hits, and another route gets 600,000 hits. What's Big Oh for memory and sort?

    It's O(600,000) for both memory and runtime. N=3 and it doesn't even matter here. Yeah these types of sorts are almost never used for this reason, they only work for things with smaller ranges. It's also especially not useful for this project. Like this project was designed so "counting sort" fails big time.

    Also we don't need to talk about the O(N) read and write. That's a given it's always there.

    >I don't think these statements make sense -- having docker installed and having redis installed are basically equivalent work. At the end of the day, the outcome is the same -- the developer is capable of running redis locally. Having redis installed on your local machine is absolutely within range for a backend developer.

    Unfortunately these statements do make sense and your characterization seems completely dishonest to me. People like to keep their local environments pure and segregated away from daemons that run in a web server. I'm sure in your universe you are claiming web developers install redis, postgresql and kafka all locally but that just sounds absurd to me. We can agree to disagree but from my perspective I don't think you're being realistic here.

    >Also, remote development is not practiced by many companies -- the only companies I've seen doing thin-clients that are large.

    It's practiced by a large amount and basically every company I've worked at for the past 5 years. Every company has to at least partially do remote dev in order to fully test E2E stuff or integrations.

    >I see it as just spinning up docker, not compose -- you already have access to the app (ex. if it was buildable via a function) so you could spawn redis in a subprocess (or container) on a random port, and then spawn the app.

    Sure. The point is it's hacky to do this without an existing framework. I'll check out that library you linked.

    >I agree that integration testing is harder -- I think there's more value there.

    Of course there's more value. You get more value at higher cost. That's been my entire point.

    >Also, for replicating S3, minio (https://github.com/minio/minio) is a good stand-in. For replicating lambda, localstack (https://docs.localstack.cloud/user-guide/aws/lambda/) is probably reasonable there's also frameworks with some consideration for this (https://www.serverless.com/framework/docs/providers/aws/guid...) built in.

    Good finds. But what about SNS, IOT, Big Query and Redshift? Again my problem isn't about specific services, it's about infra in general.

    >Ah, this is true -- but I think this is what people are testing in interviews. There is a predominant culture/shared values, and the test is literally whether someone can fit into those values.

    No. I think what's going on is people aren't putting much thought into what they're actually interviewing for. They just have some made up bar in their mind whether it's a leetcode algorithm or whether the guy wrote a unit test for the one available pure function for testing.

    >Whether they should or should not be, that's at least partially what interviews are -- does the new team member feel the same way about technical culture currently shared by the team.

    The answer is no. There's always developers who disagree with things and just don't reveal it. Think about the places you worked at. Were you in total agreement? I doubt it. A huge amount of devs are opinionated and think company policies or practices are BS. People adapt.

    >Now in the case of this interview your solution was just fine, even excellent (because you went out of your way to do async io, use newer/easier packaging methodologies, etc), but it's clearly not just that.

    The testing is just a game. I can play the game and suddenly I pass all the interviews. I think this is the flaw with your methodology as I just need to write tests to get in. Google for example in spirit attempted another method which involves testing IQ via algorithms. It's a much higher bar

    The problem with google is that their methodology can also be gamed but it's much harder to game it and often the bar is too high for the actual job the engineer is expected to do.

    I think both methodologies are flawed, but hiring via ignoring raw ability and picking people based off of weirdly specific cultural preferences is the worse of the two hiring methodologies.

    Put it this way. If a company has a strong testing culture, then engineers who don't typically test things will adapt. It's not hard to do, and testing isn't so annoying that they won't do it.

  • Unable to configure a MinIO cluster, pls help
    1 project | /r/selfhosted | 30 Jun 2023
    The answer is here https://github.com/minio/minio/discussions/17543
    1 project | /r/minio | 30 Jun 2023
    You've already helped me here https://github.com/minio/minio/discussions/17543. Thank you very much once more.
  • What's the best AWS S3 protocol alternative?
    3 projects | news.ycombinator.com | 31 May 2023
    You say protocol alternative, but assuming you're more concerned with AWS as the host than S3 as the protocol you might try https://github.com/minio/minio

    If you do feel an aversion to the protocol then the rclone backend list would be a good starting point

    https://rclone.org/overview/

  • proper content delivery (images etc)
    1 project | /r/sysadmin | 25 May 2023
    Seems like you want object storage. S3 would be the goto suggestion here, but you said it needs to run on prem so perhaps MinIO.
  • Reason to use other Build Tool than Make?
    9 projects | /r/golang | 19 May 2023
    You could refer to big OSS project Makefiles to take a look, what could be there, for example: https://github.com/minio/minio/blob/master/Makefile
  • Looking for a Backblaze B2 compatible cloud backup application for Linux that uses standard file level (not block level) ZIP encryption (and with GUI would be nice).
    3 projects | /r/DataHoarder | 16 May 2023
    Backblaze's B2 is compatible with AWS S3 that also implemented in selfhosted minio

What are some alternatives?

When comparing testcontainers-python and minio you can also consider the following projects:

LocalStack - 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline

Nextcloud - ☁️ Nextcloud server, a safe home for all your data

testcontainers-dotnet - A library to support tests with throwaway instances of Docker containers for all compatible .NET Standard versions.

Seaweed File System - SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding. [Moved to: https://github.com/seaweedfs/seaweedfs]

kubetest - Kubernetes integration testing in Python via pytest

GlusterFS - Gluster Filesystem : Build your distributed storage in minutes

seaworthy - Test harness for Docker container images 🌊 🚢

Samba - https://gitlab.com/samba-team/samba is the Official GitLab mirror of https://git.samba.org/samba.git -- Merge requests should be made on GitLab (not on GitHub)

testcontainers-go - Testcontainers for Go is a Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done.

seaweedfs - SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding.

charts - Hazelcast Official Helm Chart Repository

Swift - OpenStack Storage (Swift). Mirror of code maintained at opendev.org.