Pytest plugin for Test IT
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)
| 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.