передача переменной bash в pytest - PullRequest
0 голосов
/ 24 октября 2018

У меня проблема с передачей переменной bash в pytests.Вот что запускается:

FILES="$(git ls-files)"
python3.6 -m pytest -q tests/TestStructure.py --myoption=$FILES[0] --junitxml results.xml

Это то, что находится в $ FILES, если я распечатаю его на терминал:

README.md controls_remediation/__init__.py controls_remediation/control_handler.py controls_remediation/dbfunctions.py controls_remediation/main.py controls_remediation/pandafunctions.py controls_remediation/utilities/CONSTANTS.py controls_remediation/utilities/__init__.py controls_remediation/utilities/hadoopconnect.py controls_remediation/utilities/log_helper.py controls_remediation/utilities/settings_constants.py kafka_controls/KAFKACONSTANTS.py kafka_controls/__init__.py kafka_controls/producer.py setup.py tests/TestStructure.py tests/__init__.py tests/conftest.py tests/functional/TestFunctional.py tests/functional/__init__.py tests/unit/TestKafka.py tests/unit/TestPandaFunctions.py tests/unit/__init__.py

Вот как выглядит TestStructure.py:

import pytest


def test_answer(myoption):
    if myoption == "this":
        print ("do this option")
    elif myoption == "that":
        print ("do that option")
    else:
        print(myoption)
    assert 0

А вот как выглядит conftest.py:

import pytest


def pytest_addoption(parser):
    parser.addoption("--myoption", action="store", default="that",
        help="my option: this or that")


@pytest.fixture
def myoption(request):
    return request.config.getoption("--myoption")

Это ошибка, которую я получаю, когда запускаю pytest с использованием первой части:

no tests ran in 0.00 seconds
ERROR: file not found: tests/unit/__init__.py[0]

Я действительно понятия не имею, как это исправить.

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете получить доступ к первому элементу массива, просто назвав массив: $FILES.

Вы также можете получить доступ к первому элементу, указав индекс, но вы должны заключить выражение в фигурные скобки.: ${FILES[0]}.

Используя $FILES[0], вы расширяете $FILES и затем добавляете [0] к этой строке.

Попробуйте:

FILES="$(git ls-files)"
python3.6 -m pytest -q tests/TestStructure.py --myoption=${FILES[0]} --junitxml results.xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...