我正在编写一个数据库客户端,并希望确保日志记录和重试机制对我的所有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)在这种情况下,断言不会被重置。我该怎么做呢?我应该尝试一些参数化的测试吗?
发布于 2019-10-18 14:54:30
您可以使用fixture来实现这一点。
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_client.get1, db_client.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)https://stackoverflow.com/questions/58444598
复制相似问题