How to send multiple dicts to pytest fixture as a parameter
up vote
0
down vote
favorite
I am trying to write a test to pass valid and invalid proxy details. I have written a Pytest fixture which will do request and return the response. But my problem is that I would like to send invalid and valid proxy details during fixture. Can someone correct me whether this approach is correct or suggest me with the valid approach, I am new to Pytests. I have tried the following way.
@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
python pytest
add a comment |
up vote
0
down vote
favorite
I am trying to write a test to pass valid and invalid proxy details. I have written a Pytest fixture which will do request and return the response. But my problem is that I would like to send invalid and valid proxy details during fixture. Can someone correct me whether this approach is correct or suggest me with the valid approach, I am new to Pytests. I have tried the following way.
@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
python pytest
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to write a test to pass valid and invalid proxy details. I have written a Pytest fixture which will do request and return the response. But my problem is that I would like to send invalid and valid proxy details during fixture. Can someone correct me whether this approach is correct or suggest me with the valid approach, I am new to Pytests. I have tried the following way.
@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
python pytest
I am trying to write a test to pass valid and invalid proxy details. I have written a Pytest fixture which will do request and return the response. But my problem is that I would like to send invalid and valid proxy details during fixture. Can someone correct me whether this approach is correct or suggest me with the valid approach, I am new to Pytests. I have tried the following way.
@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
python pytest
python pytest
asked Nov 17 at 19:50
Auto-learner
241420
241420
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
You need to parameterize your test cases and not your fixture. Also, this is not a use case for using fixtures. So, instead here's how you should handle it:
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
You can choose to have different data for the positive and negative scenarios depending on the requirement.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
You need to parameterize your test cases and not your fixture. Also, this is not a use case for using fixtures. So, instead here's how you should handle it:
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
You can choose to have different data for the positive and negative scenarios depending on the requirement.
add a comment |
up vote
0
down vote
accepted
You need to parameterize your test cases and not your fixture. Also, this is not a use case for using fixtures. So, instead here's how you should handle it:
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
You can choose to have different data for the positive and negative scenarios depending on the requirement.
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
You need to parameterize your test cases and not your fixture. Also, this is not a use case for using fixtures. So, instead here's how you should handle it:
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
You can choose to have different data for the positive and negative scenarios depending on the requirement.
You need to parameterize your test cases and not your fixture. Also, this is not a use case for using fixtures. So, instead here's how you should handle it:
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
You can choose to have different data for the positive and negative scenarios depending on the requirement.
answered Nov 18 at 13:52
Samarth
26718
26718
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53354955%2fhow-to-send-multiple-dicts-to-pytest-fixture-as-a-parameter%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown