Каков наилучший способ проверить приведенный ниже случай с помощью pytest
с помощью python3
(3.6} +)?
json_data_one = {
"id": 1,
"status": True,
"name": "Jhon"
}
json_data_two = {
"id": 2,
"status": False,
"name": "Dave"
}
def foo(json_data_one, json_data_two):
# not the best way to show this
# but i want to loop through each json data then
# show the result based on `status` is either `True` or `False`
if json_data_one["status"] == True:
return json_data_one
elif json_data_two["status"] == False:
return json_data_two
@pytest.mark.parametrize("status, name", [(True, "John"), (False, "dave")])
def test_foo(status, name):
assert foo(status) == name
Приведенное выше генерирует ошибку
status = True, name = 'John'
@pytest.mark.parametrize("status, name", [(True, "John"), (False, "dave")])
def test_foo(status, name):
> assert foo(status) == name
E TypeError: foo() missing 1 required positional argument: 'json_data_two'
test_start.py:46: TypeError
___________________________________________________________________________________________ test_foo[False-dave] ___________________________________________________________________________________________
status = False, name = 'dave'
@pytest.mark.parametrize("status, name", [(True, "John"), (False, "dave")])
def test_foo(status, name):
> assert foo(status) == name
E TypeError: foo() missing 1 required positional argument: 'json_data_two'
test_start.py:46: TypeError
========================================================================================= short test summary info ==========================================================================================
FAILED test_start.py::test_foo[True-John] - TypeError: foo() missing 1 required positional argument: 'json_data_two'
FAILED test_start.py::test_foo[False-dave] - TypeError: foo() missing 1 required positional argument: 'json_data_two'
Я немного растерялся, как его реализовать, но я хочу, чтобы sh проверял каждые json данные, тогда, если status == True
return "name" == "John"
, но если status == False
return "name" == "dave"
Я полагаю, что можно использовать parametrize
, но мне трудно понять это.
Спасибо.