Как запустить несколько python файлов в папке один за другим и как создать один html отчет? - PullRequest
0 голосов
/ 27 апреля 2020

Каждый раз, когда я запускаю эти файлы в терминале, эту форму один за другим:

pytest home.py
pytest work.py
pytest office.py
pytest road.py
pytest flight.py

.
.
.

(я приводил общие имена файлов здесь)

Этот процесс занимает много времени.

Можно ли запускать эти файлы вместе один за другим с помощью любого сценария ..?

Если возможно, то как ...?

Пожалуйста, предоставьте код, если это возможно. ..

Через несколько сайтов я узнал, что, используя скрипт bash, мы можем это сделать.

Я не знаю, как это реализовать.

Если вы можете предложить какой-либо другой способ, даже это было бы полезно.

И мне нужно создать отчет для каждого файла.

Если я запускаю отдельный файл, тогда я могу сгенерировать HTML файл с использованием - HTML - отчет. html. Но я хочу запускать все файлы одновременно и мне нужно создать только один отчет. Для каждого выполнения он должен генерировать новый отчет, используя временную метку.

Если бы кто-нибудь мог сказать мне, как я могу преодолеть это, это было бы полезно.

1 Ответ

0 голосов
/ 27 апреля 2020

Переименуйте ваши тестовые файлы в test_xxx.py или xx_test.py, затем запустите pytest в каталоге root ваших тестовых файлов.

Pytest обнаружит все тесты в этих файлах и сгенерирует для них единый отчет. Вы можете проверить , как pytest обнаруживает тесты , чтобы лучше понять.

Если вы хотите добавить метку времени к имени файла отчета, попробуйте добавить переменную date, если вы находитесь в Linux:

pytest -v -s --junitxml=results$(date '+%Y%m%d_%H%M%S').xml

или, если Вы установили pytest-html и хотите создать отчет html:

pytest -v -s --html=report$(date '+%Y%m%d_%H%M%S')).html

Вы можете вызвать это в своем скрипте, конечно:

#!/bin/bash
python -m pytest -v -s --html=report$(date '+%Y%m%d_%H%M%S').html

Или, если вы хочу вызвать его из другого Python скрипта по какой-то причине:

import pytest
from datetime import datetime

now = datetime.now()
pytest.main(['-v', '-s', f'--junitxml=report{now:%Y%m%d_%H%M%S}.xml'])
...