Как отправить несколько диктов к устройству Pytest в качестве параметра - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь написать тест, чтобы передать действительные и недействительные данные прокси. Я написал приспособление Pytest, которое будет делать запрос и возвращать ответ. Но моя проблема в том, что я хотел бы отправить недействительные и действительные данные прокси во время фиксации. Может кто-то исправить меня, если этот подход правильный или предложить мне правильный подход, я новичок в Pytests. Я пробовал следующий способ.

@pytest.fixture(scope="module")
@pytest.mark.parametrize("proxyDict",[
    ({
        "http": "web-proxy.testsite:8080",
        "https": "web-proxy.testsite:8080"
        }),
({
        "http": "web-wrong:8080",
        "https": "web-.wrong:8080"
        })
])
def cve_response(proxy_dict):
    year="2018"
    base_url = 'https://static.nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-' + str(year) + '.json.zip'
    headers = {
        "content-type": "application/json"
    }
    response_data = requests.request("GET", base_url, headers=headers, verify=False, stream=True,
                                         proxies=proxy_dict)
    yield response_data

@pytest.mark.proxy
def test_valid_proxy(cve_response):
    assert 200 == cve_response.status_code

@pytest.mark.invalidproxy
def test_invalid_proxy(cve_response):
    assert not 200 == cve_response.status_code

1 Ответ

0 голосов
/ 18 ноября 2018

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

data = [{
            "http": "web-proxy.testsite:8080",
            "https": "web-proxy.testsite:8080"
        },
        {
            "http": "web-wrong:8080",
            "https": "web-.wrong:8080"
        }]

def cve_response(proxy_dict):
    year="2018"
    base_url = 'https://static.nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-' + str(year) + '.json.zip'
    headers = {
        "content-type": "application/json"
    }
    response_data = requests.request("GET", base_url, headers=headers, verify=False, stream=True,
                                         proxies=proxy_dict)
    return response_data

@pytest.mark.proxy
@pytest.mark.parameterize("proxy", data)
def test_valid_proxy(proxy):
    assert 200 == cve_response(proxy).status_code

@pytest.mark.invalidproxy
@pytest.mark.parameterize("proxy", data)
def test_invalid_proxy(proxy):
    assert not 200 == cve_response(proxy).status_code

Вы можете выбрать разные данные для положительного и отрицательного сценариев в зависимости от требования.

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