2016-07-27 4 views
1

У меня есть несколько методов python с инструкциями. Например, комбинации параметров, подлежащие тестированию. В счетной части моего кода я использую синтаксический анализатор для doc-строки используемой функции, чтобы файл конфигурации больше не нужен. Информация, которая мне нужна, содержится исключительно в строке doc функций. Интересно, хорошо ли это в промышленности?Это хорошая практика для разбора строки doc?

обновление: у меня есть длинный список экспериментов, которые нужно выполнять, представленные функциями. Для каждой функции у меня есть несколько тестовых примеров (разные для разных функций). Когда я создаю функцию, определяются тестовые примеры. Я помещаю их в строку doc и разбираю их, когда я делаю тест.

def my_function1(param1,param2) 
    '''param1: 10, 20, 40, 60; param2: 5, 10, 20, 40;''' 

    return something 


def my_function2(param1,param2,param3) 
    '''param1: 10, 20, 40, 60; param2: 5, 10, 20, 40; param3: 100, 200''' 
    return something 

. 
. 
. 

В этом случае мне удобно хранить тестовые примеры в строке документа отдельно. Но я не уверен, что синтаксический анализ doc-строки является безопасной практикой.

+2

Если конфигурация является конфиденциальной, по-видимому, нет причин помещать ее в строку документа, а не непосредственно в код. Если конфигурация является общедоступной, пользователи должны изменять файлы конфигурации, а не исходный код. – chepner

+0

@chepner Спасибо! моя ситуация в том, что у меня есть несколько функций, и для каждой функции есть некоторые «инструкции», которые записываются при создании функции. Поэтому сохранение «инструкций» с функцией более разумно в моем случае. В противном случае мне нужно оставить «инструкцию» где-нибудь в моем коде. – wh408

+1

Не совсем понятно, чего вы пытаетесь достичь. Вы заново изобретаете какую-то «docstring-to-unittest» -framework? –

ответ

1

Edit: Вот предложения PEP: https://www.python.org/dev/peps/pep-0257/#specification

Я довольно уверен, что это не является общепринятой практикой, и мой инстинкт, что это не является хорошей практикой либо.

Во-первых, некоторые примеры Docstrings из стандартных библиотечных модулей Python.

Когда я печатаю помощь для комбинаций:

Signature: 
combinations(iterable, r) --> combinations object 

Docstring: 
Return successive r-length combinations of elements in the iterable. 

combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3) 

Это помощь суммы:

Signature: 
sum(sequence[, start]) -> value 

Docstring: 
Return the sum of a sequence of numbers (NOT strings) plus the value 
of parameter 'start' (which defaults to 0). When the sequence is 
empty, return start. 

Эти строки документации разработать на английском языке.

Целью docstring в соответствии с основными разработчиками Python, по-видимому, является явное показать, как использовать методы, и прояснить любые сомнения. Я бы предположил, что ваша практика неверна, потому что вы смешиваете разные цели, разные логики в своих докстеллах.

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

В целом в программировании я считаю, что сохранение ваших разных целей изолировано - это часть того, что инкапсулирует «лучшие практики».

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

Смежные вопросы