Install size Oct 2026

What you actually install

Test Junkie ships its features in one package. To get the same features with pytest, Robot Framework or unittest you add plugins, and the plugins bring dependencies of their own. This page counts all of it: every package pip installs, measured in a clean environment per framework.

Test Junkie3,345 KBeverything built in · 19 of 19 features
pytest20,680 KB6.2× larger · 18 of 19 features
Robot Framework8,005 KB2.4× larger · 13 of 19 features + 1 partial
unittest12,078 KB3.6× larger · 9 of 19 features + 1 partial

Each framework with the plugins that bring it closest to Test Junkie's features. pytest alone, without plugins, is 12,606 KB (6 packages, 3.8× the size of Test Junkie); Robot Framework alone is 5,998 KB.

Features, and where they come from

Every feature Test Junkie has built in, and what the other frameworks need for it: built in, a plugin, or not available from any maintained package.

FeatureTest JunkiepytestRobot Frameworkunittest
Test runner and CLIbuilt in tj runpytestrobotframeworkbuilt in python -m unittest, in the standard library
Test parametrizationbuilt in @test(parameters=...)built in @pytest.mark.parametrizebuilt in test templatesparameterized
Suite-level parametrizationbuilt in @Suite(parameters=...)built in parametrized class or fixturenot available a separate robot run per variable fileparameterized parameterized_class
Parallel executionbuilt in -S / -T threadspytest-xdist worker processesrobotframework-pabot worker processesunittest-parallel processes or threads
Retries, filtered by exception typebuilt in retry=, retry_on=, no_retry_on=pytest-rerunfailures --only-rerun / --rerun-exceptrobotframework-retryfailed partial retries by tag, not by exception typenot available
Skips and conditional skipsbuilt in skip=, skip_before_test=...built in skip / skipifbuilt in Skip / Skip Ifbuilt in skip / skipIf
Setup/teardown shared across suitesbuilt in Rules, @beforeClass ...built in fixtures, conftest.pybuilt in setups, resource filesbuilt in setUp / setUpClass, base classes
Event listenersbuilt in Listenerbuilt in hooksbuilt in listener APIpartial a custom TestResult class
Tags and metadata filtersbuilt in owner, feature, component, tagsbuilt in markers and -mbuilt in tagsnot available only -k name patterns
Priority orderingbuilt in priority=pytest-ordernot availablenot available
Random order with a seedbuilt in TestOrder.RANDOM, --seedpytest-randomlybuilt in --randomize all:SEEDnot available
HTML reportbuilt in --html-reportpytest-htmlbuilt in report.html, log.htmlhtml-testrunner
JUnit XML reportbuilt in --xml-reportbuilt in --junit-xmlbuilt in --xunitunittest-xml-reporting
JSON reportbuilt in --json-reportpytest-json-reportbuilt in --output output.jsonnot available
CPU and memory monitoringbuilt in -m / monitor_resourcespytest-monitornot availablenot available
Code coveragebuilt in --code-covpytest-covcoverage coverage run -m robotcoverage
GitHub Actions annotationsbuilt in automatic in CIpytest-github-actions-annotate-failuresnot availablenot available
Saved settings, per user or projectbuilt in tj config, tj.cfgbuilt in pytest.ini / pyproject.tomlbuilt in argument filesnot available
Metadata auditbuilt in tj auditnot availablenot availablenot available
Features covered19 of 1918 of 1913 of 19 + 1 partial9 of 19 + 1 partial
Installed size3,345 KB20,680 KB8,005 KB12,078 KB

Every package, its size and why it's there

Packages you install yourself come first; the rest are pulled in by them. A package needed by several others is installed, and counted, once.

Test Junkie

PackageVersionSize (KB)Features it bringsWhy it is installed
test_junkie0.9a6864All 19 features in the table aboveyou install it
coverage7.16.21,436code coveragepulled in by test-junkie
psutil7.2.2816CPU and memory monitoringpulled in by test-junkie
colorama0.4.6167colors in the Windows consolepulled in by test-junkie
appdirs1.4.462where tj config keeps its settingspulled in by test-junkie
Total3,345 KB5 packages: 1 you install, 4 pulled in

pytest

PackageVersionSize (KB)Features it bringsWhy it is installed
pytest9.1.12,937Test runner and CLI, Test parametrization, Suite-level parametrization, Skips and conditional skips, Setup/teardown shared across suites, Event listeners, Tags and metadata filters, JUnit XML report, Saved settings, per user or projectyou install it
pytest-xdist3.8.0326Parallel executionyou install it
pytest-rerunfailures16.7142Retries, filtered by exception typeyou install it
pytest-order1.5.0111Priority orderingyou install it
pytest-randomly5.0.032Random order with a seedyou install it
pytest-html4.2.0115HTML reportyou install it
pytest-json-report1.5.061JSON reportyou install it
pytest-cov7.1.0116Code coverageyou install it
pytest-github-actions-annotate-failures0.4.219GitHub Actions annotationsyou install it
pytest-monitor1.6.685CPU and memory monitoringyou install it
Pygments2.21.08,358syntax highlighting of tracebackspulled in by pytest
coverage7.16.21,436code coveragepulled in by pytest-cov
Jinja23.1.61,147HTML templatespulled in by pytest-html
packaging26.3974version parsingpulled in by pytest, pytest-rerunfailures, wheel
urllib32.8.0908HTTP connections for requestspulled in by requests
psutil7.2.2816CPU and memory monitoringpulled in by memory-profiler, pytest-monitor
charset-normalizer3.5.2734text encoding detection for requestspulled in by requests
idna3.20506international domain names for requestspulled in by requests
requests2.34.2468HTTP client - pytest-monitor can send results to a serverpulled in by pytest-monitor
execnet2.1.2300talking to xdist's worker processespulled in by pytest-xdist
certifi2026.7.22248TLS certificates for requestspulled in by requests
wheel0.48.0208building wheel filespulled in by pytest-monitor
memory-profiler0.61.0204memory sampling for pytest-monitorpulled in by pytest-monitor
colorama0.4.6166colors in the Windows consolepulled in by pytest
pluggy1.6.0135plugin hookspulled in by pytest, pytest-cov
MarkupSafe3.0.456HTML escaping for jinja2pulled in by jinja2
iniconfig2.3.136reading pytest.inipulled in by pytest
pytest-metadata3.1.134environment metadata in reportspulled in by pytest-html, pytest-json-report
Total20,680 KB28 packages: 10 you install, 18 pulled in

Robot Framework

PackageVersionSize (KB)Features it bringsWhy it is installed
robotframework7.55,998Test runner and CLI, Test parametrization, Skips and conditional skips, Setup/teardown shared across suites, Event listeners, Tags and metadata filters, Random order with a seed, HTML report, JUnit XML report, JSON report, Saved settings, per user or projectyou install it
robotframework-pabot5.2.2540Parallel executionyou install it
robotframework-retryfailed0.2.030Retries, filtered by exception type (partial)you install it
coverage7.16.21,436Code coverageyou install it
Total8,005 KB4 packages: 4 you install, 0 pulled in

unittest

PackageVersionSize (KB)Features it bringsWhy it is installed
parameterized0.9.0139Test parametrization, Suite-level parametrizationyou install it
unittest-parallel1.8.651Parallel executionyou install it
html-testRunner1.2.162HTML reportyou install it
unittest-xml-reporting4.0.0114JUnit XML reportyou install it
coverage7.16.21,436Code coverageyou install it
lxml6.1.39,073XML writing for unittest-xml-reportingpulled in by unittest-xml-reporting
Jinja23.1.61,147HTML templatespulled in by html-testrunner
MarkupSafe3.0.456HTML escaping for jinja2pulled in by jinja2
Plus unittest itself: 539 KB in Python's standard library, not counted because every Python install already has it.
Total12,078 KB8 packages: 5 you install, 3 pulled in

pytest: what pip installs behind your back

You name 10 packages. pip installs 28: each one declares what it needs, pip installs those, then what they need, and so on. The 18 packages you never named add up to 16,736 KB, 81% of the install.

pytest 2,937 KB
├─ colorama 166 KB
├─ iniconfig 36 KB
├─ packaging 974 KB
├─ pluggy 135 KB
└─ Pygments 8,358 KB
pytest-xdist 326 KB
├─ execnet 300 KB
└─ pytest already installed above
pytest-rerunfailures 142 KB
├─ packaging already installed above
└─ pytest already installed above
pytest-order 111 KB
└─ pytest already installed above
pytest-randomly 32 KB
└─ pytest already installed above
pytest-html 115 KB
├─ Jinja2 1,147 KB
│  └─ MarkupSafe 56 KB
├─ pytest-metadata 34 KB
│  └─ pytest already installed above
└─ pytest already installed above
pytest-json-report 61 KB
├─ pytest already installed above
└─ pytest-metadata already installed above
pytest-cov 116 KB
├─ coverage 1,436 KB
├─ pluggy already installed above
└─ pytest already installed above
pytest-github-actions-annotate-failures 19 KB
└─ pytest already installed above
pytest-monitor 85 KB
├─ pytest already installed above
├─ requests 468 KB
│  ├─ charset-normalizer 734 KB
│  ├─ idna 506 KB
│  ├─ urllib3 908 KB
│  └─ certifi 248 KB
├─ psutil 816 KB
├─ memory-profiler 204 KB
│  └─ psutil already installed above
└─ wheel 208 KB
   └─ packaging already installed above
green you install itorange pulled in, you never asked for itgrey already installed by an earlier line

How each hidden package got there

Every chain from a package you installed to one you didn't. Two levels deep means it was needed by something that was itself pulled in. pytest-monitor alone brings an HTTP client stack (requests, urllib3, idna, charset-normalizer, certifi) and wheel, because it can upload results to a server. pytest itself brings pygments, the largest package in the whole install, to color tracebacks.

Package you didn't ask forSize (KB)Levels deepEvery way it got installed
Pygments8,3581pytest → Pygments
coverage1,4361pytest-cov → coverage
Jinja21,1471pytest-html → Jinja2
packaging9742pytest → packaging
pytest-rerunfailures → packaging
pytest-monitor → wheel → packaging
urllib39082pytest-monitor → requests → urllib3
psutil8162pytest-monitor → psutil
pytest-monitor → memory-profiler → psutil
charset-normalizer7342pytest-monitor → requests → charset-normalizer
idna5062pytest-monitor → requests → idna
requests4681pytest-monitor → requests
execnet3001pytest-xdist → execnet
certifi2482pytest-monitor → requests → certifi
wheel2081pytest-monitor → wheel
memory-profiler2041pytest-monitor → memory-profiler
colorama1661pytest → colorama
pluggy1351pytest → pluggy
pytest-cov → pluggy
MarkupSafe562pytest-html → Jinja2 → MarkupSafe
iniconfig361pytest → iniconfig
pytest-metadata341pytest-html → pytest-metadata
pytest-json-report → pytest-metadata
The same trees for Test Junkie, Robot Framework and unittest

Test Junkie: its four dependencies need nothing further.

test_junkie 864 KB
├─ psutil 816 KB
├─ appdirs 62 KB
├─ colorama 167 KB
└─ coverage 1,436 KB

Robot Framework: no dependencies of its own.

robotframework 5,998 KB
robotframework-pabot 540 KB
└─ robotframework already installed above
robotframework-retryfailed 30 KB
└─ robotframework already installed above
coverage 1,436 KB

unittest: unittest-xml-reporting needs lxml, a compiled XML library, for one XML report.

parameterized 139 KB
unittest-parallel 51 KB
└─ coverage 1,436 KB
html-testRunner 62 KB
└─ Jinja2 1,147 KB
   └─ MarkupSafe 56 KB
unittest-xml-reporting 114 KB
└─ lxml 9,073 KB
coverage already installed above

How it was measured

Environment
A new virtual environment per framework, CPython 3.12.5 on Windows (x64), packages installed with pip install in one command per framework. Versions are the latest on PyPI on October 7, 2026; Test Junkie 0.9a6.
What counts
Every file pip recorded for a package inside site-packages: code, the .pyc files compiled at install, compiled extensions, data files and the package's .dist-info. Not counted: pip itself, and the small launcher programs pip creates for command-line tools, whose size depends on the operating system.
Shared packages
A package several others need (packaging, coverage, jinja2) is installed once and counted once.
Other platforms
Packages with compiled parts (psutil, lxml, markupsafe, charset-normalizer) are smaller or larger on Linux and macOS, and on Linux pytest doesn't install colorama. The totals move by a few percent; the order doesn't change.
Test Junkie's own dependencies
Counted like everyone else's: coverage (1,436 KB) for --code-cov, psutil (816 KB) for resource monitoring, colorama and appdirs. Without them the test_junkie package itself is 864 KB.

Speed comparisons are on the performance benchmark page.