How to send multiple dicts to pytest fixture as a parameter
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 |
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 |
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 '18 at 19:50
Auto-learnerAuto-learner
260520
260520
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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 |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
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
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 |
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 |
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 '18 at 13:52
SamarthSamarth
337210
337210
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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