повторить тот же тест для ряда функций - PullRequest
1 голос
/ 18 октября 2019

Я пишу клиент базы данных и хочу убедиться, что механизм ведения журнала и повторов работает для всех моих методов 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)

В этом случае утверждение не сбрасывается. Как бы я пошел отсюда? Должен ли я попробовать что-то с параметризованными тестами?

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать приспособления для этого

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)
...