Closed RomanFedyunin2 closed 2 months ago
Возможно связано с https://github.com/testit-tms/adapters-python/issues/43
Это решается, если указывать externalId
для теста с соответствующим параметром.
Например так
import pytest
import testit
class TestTest:
@testit.externalId('test_test{param}')
@pytest.mark.parametrize('param', [0, 1])
def test_test(self, param):
assert 1 == 1
И это будет корректней для связи с ручными тестами.
Но мне кажется стоит учитывать параметры и в случае автоматической генерации externalId
.
Сейчас в случае, если не указан externalId
, он генериться так
item.test_external_id = utils.get_hash(item.parent.nodeid + item.function.__name__)
Наименование метода для параметризованных тестов одинаковое.
Соответственно получается одинаковый test_external_id
.
В примере выше, без указания @testit.externalId('test_test{param}')
, для двух тестов хеш вычисляется от такой строки
tests/jobs/test_test.py::TestTesttest_test
(с учётом струкруры проекта)
Можно, например, вместо этого генерировать externalId
так
item.test_external_id = utils.get_hash(''.join(item.nodeid.split('::')[-2:]))
И аналогично использовать str(item.nodeid.split('::')[-1])
в качестве наименования автотестов в TestIT (но это, наверное, уже отдельная тема)
Или использовать просто item.nodeid
в качестве уникального наименования при генерации externalId
.
Note: не тестировал подробно предложенные решения. Это только пример
Потестил ещё немного.
Текущее поведение выглядит логичным. При выполнении одного автотеста из TestIT, который связан с параметризованным тестом в pytest в Прогоне мы видим несколько результатов (для каждого параметра).
Соответтсвенно при добавлении новых параметров в этот тест, у нас по прежнему останется 1 тест в TestIT, но при выполнении будут учтены все новые параметры (в отличие от варианта создания разных автотестов в TestIT на каждый параметр).
testit-adapter-pytest 3.2.1 testit-api-client 4.0.0 testit-python-commons 3.2.1 pytest 8.2.2 python 3.12
Пример теста
В TestIT ещё нет этих автотестов.
Запуск с tmsAdapterMode=2
Ожидаемый результат: создано 2 теста в TestIT Фактический результат: создан 1 тест в TestIT