Ваш классовый метод пропускает параметр cls:
@classmethod
def create_table(some_arg_here):
"""Some code here that creates the table"""
Измените его на
@classmethod
def create_table(cls, some_arg_here):
Я изменил ваш код и добавил несколько отпечатков:
class TestClass:
@classmethod
def setup_class(cls):
print("Setting up")
cls.create_table('table1')
cls.create_table('table2')
cls.create_table('table3')
@classmethod
def create_table(cls, some_arg_here):
print("Creating:", some_arg_here)
"""Some code here that creates the table"""
def test_foo(self):
print('Running test_foo')
"""Some test code here"""
@classmethod
def teardown_class(cls):
print("Tearing down")
"""Perform teardown things"""
Если вы запустите его с -s, вы получите следующий результат:
test.py Setting up
Creating: table1
Creating: table2
Creating: table3
Running test_foo
.Tearing down
Как видите, все работает как положено. Вызывается setup_class, создаются таблицы (все 3), запускается метод тестирования, а затем запускается teardown_class.
Если вы добавите функцию test_bar (), вы получите:
test.py Setting up
Creating: table1
Creating: table2
Creating: table3
Running test_foo
.Running test_bar
.Tearing down
Кажется, мне тоже подойдет ..
Есть ли у вас еще какие-то подсказки для вашего предположения, что что-то не так?