Мне нужно было использовать это как функцию ячейки (например, SUM
или VLOOKUP
) и обнаружил, что это легко:
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
=REGPLACE(B1, "(\w) (\d+)", "$1$2")
(например: «A 243» - «A243») Оба ценны. Я использую и doctest и нос занимание места unittest. Я использую doctest для случаев, где тест дает пример использования, которое на самом деле полезно как документация. Обычно я не делаю эти тесты всесторонними, нацеливаясь только на информативный. Я эффективно использую doctest наоборот: не протестировать мой код корректно на основе моего doctest, но проверять, что моя документация корректна на основе кода.
причина состоит в том, что я нахожу, что всесторонний doctests создаст помехи Вашей документации слишком много, таким образом, Вы или закончите или с неприменимыми docstrings или с неполным тестированием.
Для того, чтобы на самом деле протестировать код , цель состоит в том, чтобы полностью протестировать каждый случай, а не проиллюстрировать то, что, делает примером, который является различной целью, которая я думаю, лучше встречен другими платформами.
Я использую unittest почти исключительно.
Время от времени, я помещу некоторый материал в docstring, это применимо doctest.
95% тестовых сценариев являются unittest.
, Почему? Мне нравится сохранять docstrings несколько короче и главный. Иногда тестовые сценарии помогают разъяснить docstring. Большую часть времени тестовые сценарии приложения являются слишком длинными для docstring.
Другое преимущество doctesting состоит в том, что Вы добираетесь, чтобы удостовериться, что Ваш код делает то, что в Вашей документации говорится, что она делает. Через некоторое время изменения программного обеспечения могут сделать Вашу документацию, и код делают разные вещи.:-)
Если бы Вы просто начинаете с идеей поблочного тестирования, я запустил бы с doctest
, потому что это так просто в использовании. Это также естественно обеспечивает некоторый уровень документации. И для более комплексного тестирования с doctest
, можно поместить тесты во внешний файл, таким образом, оно не загромождает документацию.
я предложил бы unittest
, если Вы происходите из среды того, что использовали JUnit или что-то подобное, где Вы хотите быть в состоянии записать модульные тесты обычно тем же способом, как Вы были в другом месте.
Я использую unittest исключительно; я думаю, что doctest загромождает основной модуль слишком много. Это, вероятно, имеет отношение к записи полных тестов.
И Используя допустимая и Используя довольно простая опция. doctest
модуль обеспечивает DoctTestSuite
и DocFileSuite
методы, которые создают unittest-совместимый testsuite из модуля или файла, соответственно.
, Таким образом, я использую обоих и обычно использую doctest для простых тестов с функциями, которые требуют минимальной установки (простые типы для аргументов). Я на самом деле думаю несколько тестов doctest , справка документирует функцию, вместо того, чтобы умалить его.
, Но для более сложных случаев, и для более исчерпывающего набора тестовых сценариев, я использую unittest, который обеспечивает больше управления и гибкости.
Я почти никогда не использую doctests. Я хочу, чтобы мой код был сам документирование, и docstrings предоставляют документацию пользователю. IMO добавляющие сотни строк тестов к модулю делает docstrings намного менее читаемыми. Я также нахожу модульные тесты легче изменить при необходимости.
Я предпочитаю основанные на открытии системы ("нос" и "py.test", с помощью первого в настоящее время).
doctest хорош, когда тест также хорош как документация, иначе они имеют тенденцию создавать помехи коду слишком много.