Skip to main content

Test tool (Benchmark / Test / Assertion / etc...)

Project description

error loading Epitech Logo error loading Jarbin-ToolKit Logo

๐Ÿ“ฆ Jarbin-ToolKit:JarTest v0.0.1.3

Deterministic test execution framework based on structured assertions, benchmarking, and controlled test discovery


๐Ÿ”น Short Description

Jarbin-ToolKit JarTest is a lightweight testing and benchmarking framework that executes Python test functions through structured Benchmark containers, records assertions, measures execution time, and aggregates results in a deterministic reporting system.

It provides:

  • automatic test discovery based on naming conventions
  • structured assertion tracking with contextual recording
  • execution benchmarking with precise timing
  • stdout/stderr capture utilities
  • hierarchical test execution and reporting

It is not a unit testing clone of pytest, but a deterministic execution and benchmarking harness with integrated assertion tracking.


๐Ÿ”น Authors

  • Nathan (Jarjarbin06)
  • Jarbin Studio

๐Ÿ”น License

GPL v3


๐Ÿ”น Target Audience

This library is intended for:

  • Python developers building custom test frameworks
  • developers requiring deterministic benchmarking pipelines
  • engineers designing structured validation systems
  • projects needing lightweight alternatives to full testing ecosystems

๐Ÿ”น Platform Support

  • Python โ‰ฅ 3.10
  • Standard library only (except internal Jarbin-ToolKit dependencies)
  • Linux / Windows / macOS compatible

๐Ÿ”น Purpose

Jarbin-ToolKit JarTest aims to:

  • execute test functions in isolated benchmarking environments
  • capture execution time with high-resolution measurement
  • collect structured assertion results during execution
  • aggregate errors, exceptions, and outputs in a unified model
  • provide deterministic reporting across multiple test runs

It is not a general-purpose testing framework, but a structured benchmarking and assertion orchestration layer over Python callables.


๐Ÿ”น Key Features

  • automatic test discovery via JT_ prefix
  • benchmark execution wrapper (Benchmark)
  • assertion system with contextual collection
  • execution timing with adaptive formatting (ns โ†’ s โ†’ min)
  • stdout/stderr capture via Get.Redirect
  • CLI-style test runner with formatted terminal output
  • recursive test collection across modules

๐Ÿ”น Architecture Overview

User Test Module
      โ”‚
      โ–ผ
JarTest.fetch()
      โ”‚
      โ–ผ
Benchmark(test_function)
      โ”‚
      โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
      โ–ผ               โ–ผ
StopWatch        AssertionContext
      โ”‚               โ”‚
      โ–ผ               โ–ผ
Execution        AssertionResult list
      โ”‚
      โ–ผ
Result Aggregation
      โ”‚
      โ–ผ
JarTest.run()
      โ”‚
      โ–ผ
Console Reporting Layer

๐Ÿ”น Core Concept

The system is based on four core entities:


Benchmark

Encapsulates a test execution unit:

Benchmark(test_function)

Responsible for:

  • executing test functions
  • measuring execution time
  • capturing exceptions and assertion failures
  • storing returned values

Assertion System

Assertions are recorded during execution using a context variable:

Assertion.eq(a, b)
Assertion.neq(a, b)
Assertion.contain(a, b)
Assertion.ncontain(a, b)

Each assertion produces an AssertionResult:

Field Description
name assertion type
passed boolean result
values input tuple
expected expected value
actual observed value
meta operator + type metadata

Assertions are automatically collected via AssertionContext.


JarTest

Main orchestrator:

JarTest.fetch()
JarTest.run()

Responsible for:

  • discovering test functions
  • wrapping them into benchmarks
  • executing batches of tests
  • generating structured CLI reports

Get Utility

Provides execution introspection:

  • stdout/stderr capture
  • subprocess execution wrapper
  • controlled output redirection

๐Ÿ”น API / Function Documentation


๐Ÿ”น Assertion

Method Description
eq equality check with type enforcement
neq inequality check with type enforcement
contain membership check
ncontain non-membership check

๐Ÿ”น Benchmark

Method Description
__call__(n) executes test n times
benchmark() static execution wrapper
time_to_str() formats execution time

๐Ÿ”น JarTest

Method Description
fetch() discovers test functions in module
fetch_tests() recursive module test collection
run() executes all benchmarks with reporting
__call__() fetch + run shortcut

๐Ÿ”น Get

Redirect:

Method Description
stdout() capture stdout + return from function
stderr() capture stderr + return from function
all_std() capture stdout + stderr + return
cmd_stdout() run shell command (stdout + exit)
cmd_stderr() run shell command (stderr + exit)
cmd_all_std() run shell command (stdout + stderr + exit)

๐Ÿ”น Project Structure

jarbin_toolkit_jartest/
โ”œโ”€โ”€ assertion.py
โ”œโ”€โ”€ benchmark.py
โ”œโ”€โ”€ get.py
โ”œโ”€โ”€ jartest.py
โ””โ”€โ”€ __init__.py

๐Ÿ”น Usage Section


๐Ÿ”น Defining a Test

from jarbin_toolkit_jartest import Assertion

def JT_example():
    Assertion.eq(2 + 2, 4)
    Assertion.contain("a", "abc")

๐Ÿ”น Running Tests

Auto test fetch & run

from jarbin_toolkit_jartest import JarTest

JTT_example = JarTest()
JTT_example()

๐Ÿ”น Capturing Output

from jarbin_toolkit_jartest import Get, Assertion

def foo():
    print("bar")

def JT_example():
    out, ret = Get.Redirect.stdout(foo)
    Assertion.contain("bar", out, '"bar" not printed')

๐Ÿ”น Full test

Manual test fetch & run

from jarbin_toolkit_jartest import JarTest, Get, Assertion

def foo(message: str):
    print("msg = " + message)

def JT_failing():
    out, ret = Get.Redirect.stdout(foo)
    Assertion.contain("...", out, 'missing argument')

def JT_valid():
    out, ret = Get.Redirect.stdout(foo, "hello world")
    Assertion.contain("hello world", out)

JTT_example = JarTest()
JTT_example.fetch()
JTT_example.run()

๐Ÿ”น Execution Behavior

  • Each test runs inside a Benchmark wrapper
  • Assertions are collected via contextvars
  • Execution timing is measured using StopWatch
  • Exceptions are captured but do not stop reporting unless fatal
  • Multiple test runs accumulate results

๐Ÿ”น Memory Model

  • AssertionResult objects are stored per test execution

  • Benchmark maintains:

    • time history
    • error history
    • assertion history
    • traceback history
  • JarTest maintains a registry of benchmarks indexed by name

No implicit global state outside controlled context variables.


๐Ÿ”น Design Philosophy

  • deterministic execution over dynamic behavior
  • structured assertion tracking instead of boolean-only tests
  • explicit benchmarking integration
  • modular separation of execution, assertion, and reporting
  • reproducible test runs

๐Ÿ”น Current State

โš ๏ธ Core test execution and benchmarking system is functional

Status:

  • assertion system implemented
  • benchmark engine implemented
  • test discovery implemented
  • CLI reporting implemented
  • stdout/stderr capture implemented

Limitations:

  • no parallel test execution
  • no test isolation sandboxing
  • limited assertion set
  • no fixtures system
  • no mocking framework

๐Ÿ”น Limitations

  • synchronous execution only
  • no dependency injection system
  • no advanced test lifecycle hooks
  • no distributed execution
  • console output tightly coupled to terminal UI system

๐Ÿ”น Extension / Contribution

Possible extensions:

  • fixture system for reusable test contexts
  • parallel benchmark execution
  • richer assertion library
  • mocking utilities
  • JUnit/XML export support
  • test filtering and tagging system

๐Ÿ”น Notes

JarTest is designed as a deterministic hybrid between testing and benchmarking, not a strict replacement for pytest.

It prioritizes:

  • execution traceability
  • performance measurement
  • structured assertion metadata

๐Ÿ”น Identity Summary

Jarbin-ToolKit JarTest is:

  • a deterministic test execution engine
  • a structured assertion tracking system
  • a benchmarking-oriented testing framework
  • a lightweight test orchestration layer

๐Ÿ”น Final Rule

If a test behavior is not executed inside Benchmark, it is not part of the system.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jarbin_toolkit_jartest-0.0.1.3.tar.gz (35.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jarbin_toolkit_jartest-0.0.1.3-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file jarbin_toolkit_jartest-0.0.1.3.tar.gz.

File metadata

  • Download URL: jarbin_toolkit_jartest-0.0.1.3.tar.gz
  • Upload date:
  • Size: 35.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for jarbin_toolkit_jartest-0.0.1.3.tar.gz
Algorithm Hash digest
SHA256 95213c8c4139f347c840e2f6b3af75585e1926d99a2eb8df1bf856f96c727eb8
MD5 eed3b816d572ef39589abf400fc31d52
BLAKE2b-256 55a97963a55ef2f79419d193beedfcec97ee0722c22b2366186d71de97c26c84

See more details on using hashes here.

File details

Details for the file jarbin_toolkit_jartest-0.0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for jarbin_toolkit_jartest-0.0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fe40f5124437a6161198fec9edc2a15035f6a424cb9f9689eec14ae580de4ef4
MD5 840201f7bff1bfbfaac56553a3a52e9b
BLAKE2b-256 17163ff899d9a3e9336adee6baaa8bf547364087d8173d76a4443df5f2005742

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page