Параметризация Pytest внутри тестового класса - PullRequest
0 голосов
/ 05 октября 2018

У меня есть следующий код, где я пытаюсь сгенерировать тесты с некоторыми тестовыми данными.

class Test_ABC(BaseTestCase):
    testdata = [
                (7,  'Jan', 2018, 'Jul', 2018),
                (8,  'Jan', 2018, 'Aug', 2018),
                (18, 'Jan', 2017, 'Jun', 2018),
                (36, 'Jan', 2015, 'Dec', 2017),
                (48, 'Jan', 2014, 'Dec', 2017),
               ]

    @pytest.mark.parametrize("a, b, c, d", testdata)
    def test_abc(self, a, b, c, d):
        print (a, b, c, d)

Snipper from BaseTestCase:

@pytest.mark.usefixtures('init_browser')
class BaseTestCase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(BaseTestCase, self).__init__(*args, **kwargs)

Когда я использую pytest для выполнения этого скрипта,Я получаю следующую ошибку:

TypeError: test_abc() missing 5 required positional arguments: 'a', 'b', 'c', 'd'
C:\Python3\lib\unittest\case.py:605: TypeError

Похоже, это работает, если я не наследую BaseTestCase в своем тестовом классе 'Test_ABC'.

Любая идея, что мне не хватает здесь в моем тестерегистр или в BaseTestCase?

1 Ответ

0 голосов
/ 20 марта 2019

У вас недостаточно аргументов в параметре (как указано в ошибке).Попробуйте это:

@pytest.mark.parametrize("a, b, c, d, e", testdata)
def test_abc(self, a, b, c, d, e):
    print (a, b, c, d)  # without year

А также pytest не ищет тесты в классах с конструктором __init__.Снимите его и замените unittest.TestCase на object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...