У меня есть этот файл:использования setup_class для инициализации «конфликтов» с вариантами параметризующих
import numpy as np
class Variables(object):
def __init__(self, var_name, the_method):
self.var_name = var_name
self.the_method = the_method
def evaluate_v(self):
var_name, the_method = self.var_name, self.the_method
if the_method == 'Average':
return np.average(var_name)
и тестовый файл:
import unittest
import pytest
import numpy as np
from .variables import Variables
class TestVariables():
@classmethod
def setup_class(cls):
var_name = np.array([1, 2, 3])
the_method = 'Whatever'
cls.variables = Variables(var_name, the_method)
@pytest.mark.parametrize(
"var_name, the_method, expected_output", [
(np.array([1, 2, 3]), 'Average', 2),
])
def test_evaluate_v_method_returns_correct_results(
self, var_name, the_method,expected_output):
var_name, the_method = self.variables.var_name, self.variables.the_method
obs = self.variables.evaluate_v()
assert obs == expected_output
if __name__ == "__main__":
unittest.main()
Теперь моя проблема в том, что я инициализировать значение (var_name, the_method) в классе настройки.
Итак, когда я использую разные значения в параметризации, эти значения игнорируются.
Итак, тест прямо сейчас делается, взяв в качестве the_method
ценности как Whatever
, а не как Average
(который я хочу иметь в различных настройках параметризующих).
Есть ли способ справиться с этим, не теряя setup_class
?
Потому что, если я опускаю setup_class, нормально работает.
Если я правильно понял вас: вы хотите, чтобы 'setup_class' инициализировал объект, но параметры теста, такие как' Whatever' и 'Average' отдельно? Наконец, вы намерены провести два теста: для 'Whatever' и' Average', правильно? –
@PiotrDawidiuk: Да, я хочу, чтобы setup_class мог инициализировать переменные. И я хочу использовать 'parametrize' для выполнения своих тестов. Я хочу, чтобы все, что существует внутри' parametrize', оценивалось и тестировалось. Теперь «параметризованный» «пропущен» и проверяется только то, что существует в инициализации переменных. – George