Skip to main content

Deflector is a minimalist testing library for Python designed to simplify test writing with a clear and intuitive syntax, allowing developers to create and run tests quickly and efficiently without unnecessary complications.

Project description


Why does Deflector exist?

💡 Deflector is a minimalist testing library for Python designed to simplify test writing with a clear and intuitive syntax, allowing developers to create and run tests quickly and efficiently without unnecessary complications.

check High isolation level per file
check Performant and lightweight
check Fully typed library


Quickstart

check Install

$ pip install deflector

Or with poetry

poetry add deflector -G dev

check Test

tests/test_file1.py
from deflector import affirm


affirm.equal(1, 1, "My first test with deflector")

check Run

deflector # or poetry run deflector

Or defining the directory where the tests are:

deflector --dir tests

Features

check Main

Function Description
affirm 🔍 Test assertion.
it 🤹🏻‍♀️ Isolate tests.
describe 🤹🏻‍♀️ Grouping tests.
before_each • after_each 🃏 Functions for test setup and teardown.

Affirm

The affirm is used to create tests that validate whether the behavior of your code is as expected, checking the correspondence between values ​​and triggering errors if there are discrepancies.

from deflector import affirm
Function Description
ok Checks if a value is truthy.
equal Compares if two values are equal.
not_equal Verifies if two values are different.
match_re Checks if a string matches a regex.
does_not_match_re Verifies if a string does not match a regex.
Ok
affirm.ok(value, message)
affirm.ok(True, "Ok")
Equals
affirm.equal(value, expected, message)
affirm.equal(1 + 2, 3, "Equal: Sum 1+2=3")
Not Equals
affirm.not_equal(value, expected, message)
affirm.not_equal(1 + 2, 4, "Not Equal: Sum 1+2!=4")
Match Regex
affirm.match_re(value, reg_exp, message)
affirm.match_re("acab", "ab", "Match Regex: ab in acab")
Does Not Match Regex
affirm.does_not_match_re(value, reg_exp, message)
affirm.does_not_match_re("ab", "abc", "Does Not Match Regex: ab not in a")

It

from deflector import affirm, it

@it("It Test 1")
def test_1() -> None:
    affirm.ok(True, "Ok")
    affirm.equal(1 + 1, 2, "Equal")
    affirm.not_equal(1 + 2, 1, "Not Equal")
    affirm.match_re("acab", "ab", "Match Re")
    affirm.does_not_match_re("a", "ab", "Does Not Match Re")

Describe

from deflector import affirm, describe, it

@describe("Main 1")
def describe_main() -> None:
    @it("It Test 1")
    def test1() -> None:
        affirm.equal(1 + 1, 2, "Equal 1+1=2")

    @it("It Test 2")
    def test2() -> None:
        affirm.match_re("acab", "ab", "Match Re")

Before Each • After Each

from deflector import affirm, describe, it

@describe("Main 1")
def describe_main() -> None:
    x = 1

    @before_each()
    async def start() -> bool:
        nonlocal x
        await asyncio.sleep(1)
        x += 1
        return True

    @after_each()
    async def end_() -> bool:
        nonlocal x
        await asyncio.sleep(1)
        x = 1
        return True

    @it("It Test 1")
    def test1() -> None:
        affirm.equal(x, 2, "Equal Before Each")
        affirm.equal(1 + 1, 2, "Equal 1")
        affirm.equal(1 + 1, 2, "Equal 2")

    @it("It Test 2")
    def test2() -> None:
        affirm.equal(x, 2, "Equal After Each")
        affirm.equal(1 + 1, 2, "Equal")
        affirm.not_equal(1 + 1, 1, "Not Equal")
        affirm.ok(True, "Ok")
        affirm.match_re("acab", "ab", "Match Re")
        affirm.does_not_match_re("a", "ab", "Does Not Match Re")

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

deflector-0.1.1.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

deflector-0.1.1-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file deflector-0.1.1.tar.gz.

File metadata

  • Download URL: deflector-0.1.1.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-41-generic

File hashes

Hashes for deflector-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9f977f1e547c8a54fd29b8d0e8fac47413a532f37155319023fdeebb1e12a56f
MD5 fe781cfa93c092082204fccc3f4b9a22
BLAKE2b-256 8eec327cbaeb219e47519d176076dc5d6f00cfb3ac8802e40d944f43421e1cb8

See more details on using hashes here.

File details

Details for the file deflector-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: deflector-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-41-generic

File hashes

Hashes for deflector-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f88577e2f52841ef32386ce9737f7342c0b7c0cbad8bafebfd183f6e39ba1419
MD5 452db6deff9ac6c254ad89d2163be01b
BLAKE2b-256 e04c44e9f5869caf443967c2cf0e2c7c9b97e280aad9c0c40c9676665fabaee0

See more details on using hashes here.

Supported by

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