Не использовать все аргументы из параметризации отметки pytestPython

Программы на Python
Ответить
Anonymous
 Не использовать все аргументы из параметризации отметки pytest

Сообщение Anonymous »

У меня есть две функции, которые я хочу протестировать с двумя одинаковыми входными данными и разными выходными данными.
Я пытался инкапсулировать их в класс и иметь только декоратор параметризации в классе
Я придумал код, похожий на этот

Код: Выделить всё

import pytest

def foo(A, B):
return A + B

def bar(A, B):
return A - B

@pytest.mark.parametrize("A,B,foo_output,bar_output", [
(1,2,3,-1),
(6,3,9,3),
...
])
class TestClass:

def test_foo(self, A, B, foo_output):
assert foo(A, B) == foo_output

def test_bar(self, A, B, bar_output):
assert bar(A, B) == bar_output
Pytest не позволяет мне запускать эти тесты, поскольку функция test_foo не принимает аргумент bar_output, и наоборот.

Код: Выделить всё

ERROR test/test_foo_bar.py::TestClass - Failed: In test_foo: function uses no argument 'bar_output'

Код: Выделить всё

ERROR test/test_foo_bar.py::TestClass - Failed: In test_bar: function uses no argument 'foo_output'
Просто добавление неиспользуемых аргументов foo_output и bar_output в функции работает, но не кажется лучшим решением, и я не смог найти для этого какого-либо стандартного решения.< /p>
Я исправил это, создав в классе приспособление, принимающее эти аргументы в качестве приемника, но опять же, не уверен, что это лучший подход к проблеме

Код: Выделить всё

class TestClass:

@pytest.fixture(autouse=True)
def _ignore_args(self, foo_output, bar_output):
pass

...
Какое решение будет лучшим для этой цели?

Подробнее здесь: https://stackoverflow.com/questions/791 ... arametrize
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»