Skip to main content

Zeroincombenze continuous testing framework and tools for python and bash programs

Project description

github.com Coverage License: AGPL-3

Overview


Features

  • Test execution log

  • Autodiscovery test modules and functions

  • Python 2.7+ and 3.5+

  • coverage integration

  • travis integration


Usage

Code example

zerobug makes avaiable following functions to test:


Z0BUG.setup(ctx) (python)

Z0BUG_setup (bash)

Setup for test. It is called before all tests.


Z0BUG.teardown(ctx) (python)

Z0BUG_teardown (bash)

Setup for test. It is called after all tests.


Z0BUG.build_os_tree(ctx, list_of_paths) (python)

Z0BUG_build_os_tree list_of_paths (bash)

Build a full os tree from supplied list. If python, list of paths is a list of strings. If bash, list is one string of paths separated by spaces. Function reads list of paths and then create all directories. If directory is an absolute path, it is created with the supplied path. If directory is a relative path, the directory is created under “tests/res” directory.

Warning! To check is made is parent dir does not exit. Please, supply path from parent to children, if you want to build a nested tree.

# (python)
from zerobug import Z0BUG
class RegressionTest():

    def __init__(self, Z0BUG):
        self.Z0BUG = Z0BUG

    def test_01(self, ctx):
        os_tree = ['10.0',
                   '10.0/addons',
                   '10.0/odoo',]
        root = self.Z0BUG.build_os_tree(ctx, os_tree)
# (bash)
Z0BUG_setup() {
    Z0BUG_build_os_tree "10.0 10.0/addons 10.0/odoo"
}

Z0BUG.remove_os_tree(ctx, list_of_paths) (python)

Z0BUG_remove_os_tree list_of_paths (bash)

Remove a full os tree created by build_os_tree If python, list of paths is a list of strings. If bash, list is a string of paths separated by spaces. Function reads list of paths and remove all directories. If directory is an absolute path, the supplied path is dropped. If directory is a relative path, the directory is dropped from tests/res directory.

Warning! This function remove directory and all sub-directories without any control.

# (python)
from zerobug import Z0BUG
class RegressionTest():

    def __init__(self, Z0BUG):
        self.Z0BUG = Z0BUG

    def test_01(self, ctx):
        os_tree = ['10.0',
                   '10.0/addons',
                   '10.0/odoo',]
        root = self.Z0BUG.remove_os_tree(ctx, os_tree)

Z0BUG.build_odoo_env(ctx, version) (python)

Like build_os_tree but create a specific odoo os tree.

# (python)
from zerobug import Z0BUG
from zerobug import Z0testOdoo
class RegressionTest():

    def __init__(self, Z0BUG):
        self.Z0BUG = Z0BUG

    def test_01(self, ctx):
        root = Z0testOdoo.build_odoo_env(ctx, '10.0')

Z0BUG.git_clone(remote, reponame, branch, odoo_path, force=None) (python)

Execute git clone of remote:reponame:branch into local directory odoo_path. In local travis emulation, if repository uses local repository, if exists. Return odoo root directory

# (python)
from zerobug import Z0BUG
from zerobug import Z0testOdoo

from zerobug import Z0BUG
class RegressionTest():

    def __init__(self, Z0BUG):
        self.Z0BUG = Z0BUG

    def test_01(self, ctx):
        remote = 'OCA'
        reponame = 'OCB'
        branch = '10.0'
        odoo_path = '/opt/odoo/10.0'
        Z0testOdoo.git_clone(remote, reponame, branch, odoo_path)

Unit test can run in package directory or in ./tests directory of package.

Every test can inquire internal context.

this_fqn      parent caller full qualified name (i.e. /opt/odoo/z0bug.pyc)
this          parent name, w/o extension (i.e. z0bug)
ctr           test counter [both bash and python tests]
dry_run       dry-run (do nothing) [opt_dry_run in bash test]          "-n"
esanity       True if required sanity check with echo                  "-X"
max_test      # of tests to execute [both bash and python tests]       "-z"
min_test      # of test executed before this one                       "-r"
on_error      behavior after error, 'continue' or 'raise' (default)
opt_echo      True if echo test result onto std output                 "-e"
opt_new       new log file [both bash and python tests]                "-N"
opt_noctr     do not count # tests [both bash and python tests]        "-0"
opt_verbose   show messages during execution                           "-v"
logfn         real trace log file name from switch                     "-l"
qsanity       True if required sanity check w/o echo                   "-x"
run4cover     Run tests for coverage (use coverage run rather python)  "-C"
python3       Execute test in python3                                  "-3"
run_daemon    True if execution w/o tty as stdio
run_on_top    Top test (not parent)
run_tty       Opposite of run_daemon
tlog          default tracelog file name
_run_autotest True if running auto-test
_parser       cmd line parser
_opt_obj      parser obj, to acquire optional switches
WLOGCMD       override opt_echo; may be None, 'echo', 'echo-1', 'echo-0'
Z0            this library object

Environment read:

DEV_ENVIRONMENT Name of package; if set test is under travis emulator control

COVERAGE_PROCESS_START

Name of coverage conf file; if set test is running for coverage



Getting started

Installation

Zeroincombenze tools require:

  • Linux Centos 7/8 or Debian 9/10 or Ubuntu 18/20/22

  • python 2.7+, some tools require python 3.6+

  • bash 5.0+

Stable version via Python Package

pip install zerobug

Current version via Git

cd $HOME
git clone https://github.com/zeroincombenze/tools.git
cd ./tools
./install_tools.sh -p
source $HOME/devel/activate_tools

Upgrade

Stable version via Python Package

pip install zerobug -U

Current version via Git

cd $HOME
./install_tools.sh -U
source $HOME/devel/activate_tools


Credits

Contributors


This module is part of tools project.

Last Update / Ultimo aggiornamento: 2023-05-21

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

zerobug-2.0.8.tar.gz (43.9 kB view hashes)

Uploaded Source

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