对多个功能重复相同的测试

问题描述 投票:1回答:1

我正在编写数据库客户端,并希望确保所有CRUD方法的日志记录和重试机制都有效。

是否有一种方法可以对列表中的所有方法一遍又一遍地重复相同的测试?

或者这里的最佳实践是什么?

    @patch_whatever
    def test_all(self,log_mock,execute_mock):
        db = DBClient()
        l = [db.get1,db.get2]
        for function in l:
            function()
            self.assertEqual(3, log_mock.call_count)
            self.assertEqual(3, execute_moock.call_count)

在这种情况下,不会重置断言。我怎么从这里走?我应该尝试使用参数化测试吗?

python pytest repeat
1个回答
0
投票

您可以使用灯具

import pytest


@pytest.fixture(scope="module")
def db_client():
    return DBClient()


@pytest.fixture(scope="module")
def db_function(request, db_client):
    for func in [db.get1,db.get2]:
       yield func

@patch_whatever
def test_all(self, log_mock, execute_mock, db_function):
    db_function()
    self.assertEqual(3, log_mock.call_count)
    self.assertEqual(3, execute_mock.call_count)
© www.soinside.com 2019 - 2024. All rights reserved.