答案 0 :(得分:2)
如pytest
docs中所述:
注意:
unittest.TestCase
方法无法直接接收fixture参数作为实现可能会导致运行通用unittest.TestCase测试套件的能力。以上
usefixtures
和autouse
示例应该有助于将pytest灯具混合到单元测试套件中。您也可以逐步从子类化从
unittest.TestCase
转移到普通断言,然后开始逐步从完整的pytest功能集中受益。
因此,遵循这个建议,您可以在类级别定义一个“传递”autouse fixture,它接受其他fixture作为参数,并将引用存储在单个测试中应该需要的任何内容:
class TasksTest(TestCase):
@pytest.fixture(autouse=True)
def my_celery_passthrough(self, celery_worker, celery_session_worker):
self.worker = celery_worker
self.session_worker = celery_session_worker
def test_spam(self):
assert 'macbookpro2017' in self.worker.hostname
assert 'macbookpro2017' in self.session_worker.hostname
但是,让我重复上面引用的最后部分:
您也可以逐步从子类化从
unittest.TestCase
转移到普通断言,然后开始逐步从完整的pytest功能集中受益。
由于您已经在使用pytest
不再理解的unittest
功能,为什么坚持测试类?只需从一开始就将新测试作为函数编写,这样您就不必引入任何变通方法。对于旧的基于类的测试,您可以暂时保留它们,并在以后重写它们,如果您必须修改它们。