Python - что следует и не нужно тестировать

Я пытаюсь понять, что должно и не должно быть проверено. Даже после прочтения других вопросов / ответов по SO, я все еще не совсем понял это. Один из старших разработчиков в моей работе говорит, что весь мой код должен быть протестирован, но кажется, что тестировать его части - непросто, то есть когда эти части используют только тот код, который уже был протестирован.

В следующем примере есть функция http-запроса и функция get username. Все, что делает функция get username, это вызывает функцию http-запроса. Поскольку я использую Testbed, нет отправляемого HTTP-запроса, поэтому мы не проверяем правильность возвращаемых данных. Так стоит ли мне проверять функцию get username?

Код из проверяемого файла

def fetch_url(url, method=urlfetch.GET, data=''):
    """Send a HTTP request"""

    result = urlfetch.fetch(url=url, method=method, payload=data,
                            headers={'Access-Control-Allow-Origin': '*'})

    return result.content


def get_user_name():
    """Get the name of the current user"""

    url = '{}/user?access_token={}'.format(GITHUB_API_URL, get_access_token())

    result = json.loads(fetch_url(url))

    return result['login']

Вот тест:

class TestUrlFetch(unittest.TestCase):
    """Test if fetch_url sending legitimate requests"""

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_urlfetch_stub()

    def test_fetch_url(self):
        from console.auth import fetch_url

        # Grab content via a URL fetch
        content = fetch_url('https://google.com')

        # Test that content is not empty
        self.assertIsNotNone(content)

    def tearDown(self):
        self.testbed.deactivate()

Поэтому, как указано выше, я должен написать еще один тест для проверки get_user_name функционировать?

2 ответа

Решение

кажется, что это непросто тестировать его части - то есть когда эти части используют только код, который уже был протестирован.

Как вы знаете, что вы используете эти части правильно, вместе?

Модульные тесты предназначены для быстрого выявления ошибок программирования - ошибок и изменений в интерфейсах.

Зависит от методологии тестирования, но я думаю, что тестирование каждой строки кода - хорошая идея для кода, который необходимо поддерживать. Это не значит, что каждая строка нуждается в собственном тесте. Вы можете использовать такие инструменты, как cover.py, чтобы увидеть, какие строки охватывают ваши тесты.

Другие вопросы по тегам