Python - doctest по сравнению с [закрытым] unittest

Мне нужно было использовать это как функцию ячейки (например, SUM или VLOOKUP) и обнаружил, что это легко:

  1. Убедитесь, что вы находитесь в файле макросов с поддержкой макроса (save as xlsm).
  2. Открыть инструменты разработчика Alt + F11
  3. Добавить Microsoft VBScript Regular Expressions 5.5 , как и в других ответах
  4. Создайте следующую функцию либо в рабочей книге, либо в ее собственном модуле:
    Function REGPLACE(myRange As Range, matchPattern As String, outputPattern As String) As Variant
        Dim regex As New VBScript_RegExp_55.RegExp
        Dim strInput As String
    
        strInput = myRange.Value
    
        With regex
            .Global = True
            .MultiLine = True
            .IgnoreCase = False
            .Pattern = matchPattern
        End With
    
        REGPLACE = regex.Replace(strInput, outputPattern)
    
    End Function
    
  5. Затем вы можете использовать в ячейке с =REGPLACE(B1, "(\w) (\d+)", "$1$2") (например: «A 243» - «A243»)
154
задан the Tin Man 2 June 2016 в 18:39
поделиться

8 ответов

Оба ценны. Я использую и doctest и нос занимание места unittest. Я использую doctest для случаев, где тест дает пример использования, которое на самом деле полезно как документация. Обычно я не делаю эти тесты всесторонними, нацеливаясь только на информативный. Я эффективно использую doctest наоборот: не протестировать мой код корректно на основе моего doctest, но проверять, что моя документация корректна на основе кода.

причина состоит в том, что я нахожу, что всесторонний doctests создаст помехи Вашей документации слишком много, таким образом, Вы или закончите или с неприменимыми docstrings или с неполным тестированием.

Для того, чтобы на самом деле протестировать код , цель состоит в том, чтобы полностью протестировать каждый случай, а не проиллюстрировать то, что, делает примером, который является различной целью, которая я думаю, лучше встречен другими платформами.

170
ответ дан the Tin Man 23 November 2019 в 22:00
поделиться

Я использую unittest почти исключительно.

Время от времени, я помещу некоторый материал в docstring, это применимо doctest.

95% тестовых сценариев являются unittest.

, Почему? Мне нравится сохранять docstrings несколько короче и главный. Иногда тестовые сценарии помогают разъяснить docstring. Большую часть времени тестовые сценарии приложения являются слишком длинными для docstring.

47
ответ дан S.Lott 23 November 2019 в 22:00
поделиться

Другое преимущество doctesting состоит в том, что Вы добираетесь, чтобы удостовериться, что Ваш код делает то, что в Вашей документации говорится, что она делает. Через некоторое время изменения программного обеспечения могут сделать Вашу документацию, и код делают разные вещи.:-)

32
ответ дан Jason Baker 23 November 2019 в 22:00
поделиться

Если бы Вы просто начинаете с идеей поблочного тестирования, я запустил бы с doctest, потому что это так просто в использовании. Это также естественно обеспечивает некоторый уровень документации. И для более комплексного тестирования с doctest, можно поместить тесты во внешний файл, таким образом, оно не загромождает документацию.

я предложил бы unittest, если Вы происходите из среды того, что использовали JUnit или что-то подобное, где Вы хотите быть в состоянии записать модульные тесты обычно тем же способом, как Вы были в другом месте.

13
ответ дан Greg Hewgill 23 November 2019 в 22:00
поделиться

Я использую unittest исключительно; я думаю, что doctest загромождает основной модуль слишком много. Это, вероятно, имеет отношение к записи полных тестов.

7
ответ дан Tony Arkles 23 November 2019 в 22:00
поделиться

И Используя допустимая и Используя довольно простая опция. doctest модуль обеспечивает DoctTestSuite и DocFileSuite методы, которые создают unittest-совместимый testsuite из модуля или файла, соответственно.

, Таким образом, я использую обоих и обычно использую doctest для простых тестов с функциями, которые требуют минимальной установки (простые типы для аргументов). Я на самом деле думаю несколько тестов doctest , справка документирует функцию, вместо того, чтобы умалить его.

, Но для более сложных случаев, и для более исчерпывающего набора тестовых сценариев, я использую unittest, который обеспечивает больше управления и гибкости.

7
ответ дан davidavr 23 November 2019 в 22:00
поделиться

Я почти никогда не использую doctests. Я хочу, чтобы мой код был сам документирование, и docstrings предоставляют документацию пользователю. IMO добавляющие сотни строк тестов к модулю делает docstrings намного менее читаемыми. Я также нахожу модульные тесты легче изменить при необходимости.

4
ответ дан JimB 23 November 2019 в 22:00
поделиться

Я предпочитаю основанные на открытии системы ("нос" и "py.test", с помощью первого в настоящее время).

doctest хорош, когда тест также хорош как документация, иначе они имеют тенденцию создавать помехи коду слишком много.

2
ответ дан lazy1 23 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: