Как я могу увидеть больше информации о неудачных тестах в pytest? - PullRequest
0 голосов
/ 22 января 2020
import subprocess
import pytest

@pytest.mark.parametrize("x", range(19))
@pytest.mark.parametrize("y", range(3))
def test_fw(x, y):   
     subprocess.call(['fw-test.exe', '--cal_tank', str(x), str(y)])

Пример из вывода: у меня есть некоторые ошибки. Как я могу узнать, сколько они стоят?

.ERROR : Provided invalid 'mode' argument (17). Valid range from 0 to 16.
Usage:
--cal_tank mode rcv_index [output_csv_file]
.ERROR : Provided invalid 'mode' argument (18). Valid range from 0 to 16.
Usage:
--cal_tank mode rcv_index [output_csv_file]



========================== 57 passed in 7.78 seconds ==========================

1 Ответ

1 голос
/ 22 января 2020
# To call:
#  python -m pytest ppp.py

import pytest
from subprocess import *

FWTEST_PATH = r'fw-test.exe' # Here should be full path to the fw-test.exe !

def call_fwtest(x, y, timeout=3):
    with Popen([FWTEST_PATH, '--cal_tank', str(x), str(y)],
            stderr=PIPE, stdout=PIPE) as p:
        p.wait(timeout)
        return (p.returncode, p.stderr.read(), p.stdout.read())

@pytest.mark.parametrize("x", range(19))
@pytest.mark.parametrize("y", range(3))
def test_fw(x, y):
    returncode, out, err = call_fwtest(x, y)
    assert out == b'MY EXPECTED OUT'

Вы можете установить timeout аргумент для управления временем, после которого вы получите исключение TimeoutExpired, если команда fw-test.exe зацепится. Для его вызова используйте командную строку python3 -m pytest ppp.py, где "ppp.py" - предполагаемое имя этого файла. Подробнее здесь об используемых функциях модуля «подпроцесс». Выходные данные имеют тип байтов, при необходимости вы можете добавить параметр encoding к вызову Popen .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...