Исходная база состоит из нескольких библиотек / модулей Python, отделенных друг от друга. Для каждого из них существует набор тестов, т.е.
- модуль называется:
foo
, с несколькими файлами,
- соответствующий файл теста
test_foo.py
, с двумя тестами, написанными с использованием Pytest.
После запуска тестов я получаю файл XML, сгенерированный с содержимым, подобным следующему:
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite name="foo/test_foo" tests="1" failures="0" errors="0">
<testcase name="foo/test_foo" status="run" duration="9" time="9"></testcase>
<system-out><![CDATA[============================= test session starts ==============================
platform linux -- Python 3.6.6, pytest-3.10.1, py-1.7.0, pluggy-0.8.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: ..., inifile: pytest.ini
plugins: timeout-1.3.2, mock-1.10.0, cov-2.6.0
timeout: 60.0s
timeout method: thread
timeout func_only: False
collecting ... collected 2 items
::test_foo_test1
-------------------------------- live log setup --------------------------------
# ... some logging performed in the test...
PASSED [ 50%]
::test_foo_test2
-------------------------------- live log call ---------------------------------
# ... some logging performed in the test...
PASSED [100%]
=========================== 2 passed in 6.63 seconds ===========================]]></system-out>
</testsuite>
</testsuites>
( примечание : невыровненная часть заключена в маркеры system-out
)
Мой pytest.ini
файл довольно прост и содержит только информацию о регистрации (log_cli*
, log_file*
) и timeout
. Я использую bazel в качестве системы сборки, которая определяет py_test
заданий, и я предполагаю, что она каким-то образом неявно добавляет настройки вывода по умолчанию. Это должно, однако, работать аналогично даже при непосредственном запуске.
Теперь я хотел бы обработать кучу этих файлов XML и извлечь общее количество выполненных тестов, ошибок и т. Д. Проблема, показанная в примере, состоит в том, что файл XML утверждает, что число тестов равно tests="1"
, тогда как стандартный вывод из журнала показывает, что было собрано как минимум два элемента.
Мне кажется, что этот формат учитывает все файлов как контрольных примеров , а не как фактические контрольных примеров , собранные в файлы.
Есть ли в Python простой способ сделать так, чтобы тестовый набор содержал число collected items
?