Skip to main content

Pytest plugin for Test IT

https://img.shields.io/pypi/v/testit-pytest?style=plastic https://img.shields.io/pypi/dm/testit-pytest?style=plastic https://img.shields.io/pypi/pyversions/testit-pytest?style=plastic https://img.shields.io/github/contributors/testit-tms/autotest-integration-python?style=plastic

Changes in update 0.2.10

  • Supported work with plugin pytest-xdist

  • Added optional parameter testrun_name in connection_config.ini for the name of test-run in Test IT

  • Fixed bug with default values in step’s args

Support for the testit-pytest has been discontinued. Further development: - testit-adapter-pytest https://pypi.org/project/testit-adapter-pytest/ - testit-api-client https://pypi.org/project/testit-api-client/

Changes in update 0.2.9

  • Fixed work with plugin pytest-check

  • Supported work with plugin pytest-rerunfailures

Installation

$ pip install testit-pytest

Local usage

You need to put the connection_config.ini file in the root directory of the project.

Simple connection_config.ini:

[testit]
url = https://{DOMAIN} - location of the Test IT instance
privatetoken = it has the form {T2lKd2pLZGI4WHRhaVZUejNl}
    1. go to the https://{DOMAIN}/user-profile profile
    2. copy the API secret key
projectID = it has the form {5236eb3f-7c05-46f9-a609-dc0278896464}
    1. create a project
    2. open DevTools -> network
    3. go to the project https://{DOMAIN}/projects/20/tests
    4. GET-request project, Preview tab, copy id field
configurationID = it has the form {15dbb164-c1aa-4cbf-830c-8c01ae14f4fb}
    1. create a project
    2. open DevTools -> network
    3. go to the project https://{DOMAIN}/projects/20/tests
    4. GET-request configurations, Preview tab, copy id field
testrun_name = {NAME} - optional parameter for specifying the name of test-run in Test IT

Additional information: values in connection_config.ini are specified without “{}”.

Usage in command line:

$ pytest --testit

Usage in CI/CD

The first option

Usage with a connection_config.ini file in the root directory of the project:

[testit]
testrunID = {TEST_RUN_ID}
url = {URL}
privatetoken = {PRIVATE_TOKEN}

The second option

Usage with command-line parameters in a CI/CD file:

pytest --testit --testrunid=${TEST_RUN_ID} --testit_url=${URL} --privatetoken=${PRIVATE_TOKEN}

Usage debug

The first option

Usage with a connection_config.ini file in a separate section:

[debug]
testit_proxy = {"http": "http://localhost:8888", "https": "http://localhost:8888"}

The second option

Usage with command-line parameters in a CI/CD file:

pytest --testit --testit_proxy='{"http":"http://localhost:8888","https":"http://localhost:8888"}'

Simple tests

"""
Description of decorators (* - required):

testit.workItemID - linking an autotest to a test case
*testit.displayName - name of the autotest in the Test IT system (can be replaced with documentation strings)
*testit.externalID - ID of the autotest within the project in the Test IT System
testit.title - title in the autotest card
testit.description - description in the autotest card
testit.labels - tags in the work item
testit.link - links in the autotest card
testit.step - the designation of the step called in the body of the test or other step

All decorators support the use of parameterization attributes

Description of methods:
testit.addLink - links in the autotest result
testit.step - usage in the "with" construct to designation a step in the body of the test
testit.attachments - uploading files in the autotest result
testit.message - information about autotest in the autotest result
"""

import pytest
import testit


# Parameterized test with a full set of decorators
@testit.workItemID(627)
@testit.displayName('Simple autotest 1 - {name}')
@testit.externalID('Simple_autotest1_{name}')
@testit.title('Authorization')
@testit.description('E2E_autotest')
@testit.labels('{labels}')
@testit.link(url='https://roviti2348.atlassian.net/browse/JCP-15593')
@testit.link(url='{url}', type='{link_type}', title='{link_title}')
@pytest.mark.parametrize('name, labels, url, link_type, link_title', [
    ('param 1', ['E2E', 'test'], 'https://dumps.example.com/module/JCP-15593', testit.LinkType.DEFECT, 'JCP-15593'),
    ('param 2', (), 'https://github.com/testit-tms/listener-csharp', testit.LinkType.RELATED, 'Listener'),
    ('param 3', ('E2E', 'test'), 'https://best-tms.testit.software/projects', testit.LinkType.REQUIREMENT, ''),
    ('param 4', {'E2E', 'test'}, 'https://testit.software/', testit.LinkType.BLOCKED_BY, 'Test IT'),
    ('param 5', 'test', 'https://github.com/testit-tms', testit.LinkType.REPOSITORY, 'GitHub')
])
def test_1(self, name, labels, url, link_type, link_title):
    testit.addLink(
        title='component_dump.dmp',
        type=testit.LinkType.RELATED,
        url='https://dumps.example.com/module/some_module_dump'
    )
    testit.addLink(
        title='component_dump.dmp',
        type=testit.LinkType.BLOCKED_BY,
        url='https://dumps.example.com/module/some_module_dump'
    )
    testit.addLink(
        title='component_dump.dmp',
        type=testit.LinkType.DEFECT,
        url='https://dumps.example.com/module/some_module_dump'
    )
    testit.addLink(
        title='component_dump.dmp',
        type=testit.LinkType.ISSUE,
        url='https://dumps.example.com/module/some_module_dump'
    )
    testit.addLink(
        title='component_dump.dmp',
        type=testit.LinkType.REQUIREMENT,
        url='https://dumps.example.com/module/some_module_dump'
    )
    testit.addLink(
        title='component_dump.dmp',
        type=testit.LinkType.REPOSITORY,
        url='https://dumps.example.com/module/some_module_dump'
    )
    with testit.step('Log in the system', 'system authentication'):
        with testit.step('Enter the login', 'login was entered'):
            with testit.step('Enter the password', 'password was entered'):
                assert True
        with testit.step('Create a project', 'the project was created'):
            with testit.step('Enter the project', 'the contents of the project are displayed'):
                assert True
            with testit.step('Create a test case', 'test case was created'):
                assert True
    with testit.step('Attachments'):
        testit.attachments(
            join(dirname(__file__), 'docs/text_file.txt'),
            join(dirname(__file__), 'pictures/picture.jpg'),
            join(dirname(__file__), 'docs/document.docx')
        )
        testit.attachments(
            join(dirname(__file__), 'docs/document.doc'),
            join(dirname(__file__), 'docs/logs.log')
        )
        assert True
    with testit.step('step 3'):
        assert True
    with testit.step('step 4'):
        assert True

# Test with a minimal set of decorators
@testit.externalID('Simple_autotest2')
def test_2():
    """Simple autotest 2"""
    assert oneStep()
    assert two_step()

@testit.step
def oneStep():
    assert oneOneStep()
    assert oneTwoStep()
    return True

@testit.step
def twoStep():
    return True

@testit.step('step 1.1', 'description')
def oneOneStep():
    return True

@testit.step('step 2')
def oneTwoStep():
    return True

@testit.externalID('Simple_test_skip')
@testit.displayName('Simple test skip')
@pytest.mark.skipif(True, reason='Because i can')
def test_skip():
    assert True

Metadata

Release files for testit-pytest 0.2.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for testit-pytest 0.2.10
File Size Uploaded Provenance
testit-pytest-0.2.10.tar.gz 14.8 kB Without provenance Details

Release files / testit-pytest-0.2.10.tar.gz

Download URL testit-pytest-0.2.10.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e99234fe8a3cd805ac72d16327cfea3c73f228a7984da69060abbff3f83bd2f0
BLAKE2b-256 checksum
How to use checksums
294af3de7ad95db55cb8907b05d6e0450be7609f045e172bf887b526e10bea85
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Security for testit-pytest 0.2.10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page