В Pytest, как я могу использовать аргументы командной строки для изменения параметров теста? - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу добавить параметр командной строки в мои тесты, которые влияют (но не только) на параметры теста.Поэтому я добавил опцию к своему conftest.py:

def pytest_addoption(parser):
    parser.addoption("--target-name", action="store")

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

@pytest.mark.parametrize(
    "target_specific_data", json.parse(open("target-%s.json" % target_name)))
def test_foo(target_specific_data):
      ...
      ...

Как я могу сделать это с pytest?

1 Ответ

0 голосов
/ 19 февраля 2019

Pytest рассматривает значение параметров как список значений.Вы можете создать одну функцию, которая будет возвращать ваши данные и присваивать им список во время выполнения, или заставить функцию возвращать сам список, как показано ниже.

conftest.py

import os

def pytest_addoption(parser):
    parser.addoption("--target-name", action="store")

def pytest_configure(config):
    if config.getoption('target-name'):
        os.environ["target-name"] = config.getoption('target-name')

testфайл

import json
import pytest
import os

def get_test_param():
    return json.parse(open("target-{}.json".format(os.getenv('target-name')))

@pytest.mark.parametrize('target_specific_data', [get_test_param()]))
def test_foo(target_specific_data):
    pass

Надеюсь, это поможет !!

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