Skip to main content

PyQuickTest is an experimental python testing framework designed to deliver an easy-and-quick-to-start python testing mechanism.

Project description

PyQuickTest

PyQuickTest is an experimental python testing framework designed to deliver an easy-and-quick-to-start python testing mechanism.

Getting started

PyQuickTest test kit is divided into few categories:

Decorators

@is_test

Transform the decorated function into a test function for the framework.
example:
    "my_function" is not a test.
    def my_function():
        ok()
    ~~~~~~~~~~~~
    "my_function" is a test.
    @is_test()
    def my_function():
        ok()

@qpt_group

Categorize the decorated function as belonging to the given groups and subgroups. Groups and subgroups should be given as arguments.
example:
    "my_function" has no test group.
    @is_test()
    def my_function():
        ok()
~~~~~~~~~~~~~~
    "my_function" belong to the test group "Group".
    @is_test()
    @qpt_group("Group")
    def my_function():
        ok()
~~~~~~~~~~~~~~
    "my_function" belong to the test group "Group" and subgroup "Subgroup".
    @is_test()
    @qpt_group("Group", "Subgroup")
    def my_function():
        ok()

@qpt_execnbr

Order the decorated test function to be run a given number of times.
example:
    "my_function" is run once.
    @is_test()
    def my_function():
        ok()
    ~~~~~~~~~~~~
    "my_function" is run 100 times.
    @is_test()
    @qpt_execnbr(100)
    def my_function():
        ok()

@qpt_parametrize

Use the given parameters to the test function.
example:
    "my_function" will fail once tested because no arg is provided.
    @is_test()
    def my_function(arg):
        ok()
    ~~~~~~~~~~~~~~
    "my_function" will will be run with arg = 8.
    @is_test()
    @qpt_parametrize(8)
    def my_function(arg):
        ok()
    ~~~~~~~~~~~~~~
    "my_function" will will be run with arg1 = 8, arg2 = 'a' and arg3 = [45.19].
    @is_test()
    @qpt_parametrize(8, 'a', [45.19])
    def my_function(arg1, arg2, arg3):
        ok()

Assertion functions

ok

Validate the current test.
example:
    The test "my_function" will pass.
    @is_test()
    def my_function(arg):
        ok()

ko

Unvalidate the current test with an optional error message.
example:
    The test "my_function" will fail.
    @is_test()
    def my_function(arg):
        ko("This test failed!")

check

Unvalidate the current test if the given boolean is False. An optional error message can be provided. If the given boolean is True, do nothing.
example:
    The test "my_function" will fail if the generated number 'a' is lower than 10.
    @is_test()
    def my_function(arg):
        a = gen_int()
        check(a > 10, "a isn't greater than 10")
        ok()

ensure

Validate or unvalidate the current test depending on the given boolean. An optional error message can be provided.
example:
    The test "my_function" will pass if the generated number 'a' if greater than 10, and fail otherwise.
    @is_test()
    def my_function(arg):
        a = gen_int()
        ensure(a > 10, "a isn't greater than 10")

Generator functions

gen_none

Generate None.

gen_bool

Generate a random boolean.

gen_int

Generate a random integer. Min and max can be provided.

gen_signed_int

Generate a random signed integer. Min / max can be given.

gen_float

Generate a random float.

gen_signed_float

Generate a random signed float. Min and max can be given.

gen_ascii_lower_char

Generate a random ascii lower char.

gen_ascii_upper_char

Generate a random ascii upper char.

gen_ascii_char

Generate a random ascii char.

gen_ascii_lower_string

Generate a random ascii lower string.

gen_ascii_upper_string

Generate a random ascii upper string.

gen_ascii_string

Generate a random ascii string.

gen_callable

Generate a random callable. The number of arguments can be specified with nbr_args, as well as the generator function for the returned value with gen_return. If raised_exception = True, then the callable will raise an exception.

gen_generator

Generate a random iterator. The iterator length can be provided, as well as the elements generator function with the gen_element argument.

gen_list

Generate a random list. The list length can be provided, as well as the elements generator function with the the gen_element argument.

gen_dict

Generate a random dict. The dict length can be provided, as well as the keys generator function with the the gen_keys argument, and the element generator function with the gen_element argument.

gen_random_value

Generate a random value from any single value generator decorated with the "is_gen_value" flag attribute.

gen_random_iterable

Generate a random iterable from any iterable generator decorated with the "is_gen_iterable" flag attribute.

gen_random

Generate a random data from any generator decorated with the "is_gen" flag attribute.

Testing functions

test_one

Run a single test function. A few optional arguments can be provided, but if this function is directly used alone, only passing the test function as a parameter is certainly enough.
example:
    Run the test "my_function".
    test_one(my_function)
    ~~~~~~~~~~~~~~~
    Run the test "my_function" with a printed prefix "==>" before the test result output.
    test_one(
        my_function,
        prefix="==>"
    )
    ~~~~~~~~~~~
    Run the test "my_function" with an indentation of 4 spaces and a printed prefix "==>" before the test result output.
    test_one(
        my_function,
        prefix="==>"
        indent=4
    )

test_group

Run a group of test functions. If you want to run a subgroup, pass every group and subgroup as a parameter. If no context is provided, it will be obtained by importing the caller file. If a filename is provided, the context will be retrieved from this file.
example:
    Run the test functions from group "G".
    test_group("G")
    ~~~~~~~~~~
    Run the test functions from group "G" and subgroup "Subgroup".
    test_group(
        "G",
        "Subgroup"
    )
    ~~~~~~~~~
    Run the test functions from group "G", subgroup "SG" and sub-subgroup "SSG".
    test_group(
        "G",
        "SG",
        "SSG",
        filename="tests.py"
    )

test_all

Run every test functions. If no context is provided, it will be obtained by importing the caller file. If a filename is provided, the context will be retrieved from this file.
example:
    Run the test functions from caller file context.
    test_all()
    ~~~~~~
    Run the test functions from file "test.py".
    test_all(
        filename="tests.py"
    )

Installation

TBA

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

PyQuickTest-0.1.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

PyQuickTest-0.1.0-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file PyQuickTest-0.1.0.tar.gz.

File metadata

  • Download URL: PyQuickTest-0.1.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for PyQuickTest-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1c9b8292e2b5075aa89519b8741c81a161d755ab4acef1ced28ed8ad69e4f75c
MD5 836c92fe71d9cc556060fc4909ba7f58
BLAKE2b-256 d26bab089a40133f5fa7afc32ada1f587b145817b20d10a364c7ac544179ed8d

See more details on using hashes here.

File details

Details for the file PyQuickTest-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: PyQuickTest-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 26.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for PyQuickTest-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a537966d5116401637f00bbd9fd53a20a0508b0a4413c62367798e3af5f99e69
MD5 6c9a954c89be2c42d457db70ae1e4d16
BLAKE2b-256 41023d98e678fe40ff00b8d2b16311b5217b5553fed6db5f551163595380faf7

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