2015-04-22 5 views
1

В моем приложении у меня есть метод, который проверяет адрес CIDR. Все это делает обтекает методом ipv4validate_cidr:Должны ли быть записаны тестовые примеры для методов, которые обертывают сторонний код?

def isValidCIDR(self, cidr): 
    return iptools.ipv4.validate_cidr(cidr) 

мне не нравится это лично. Я бы скорее поставил проверку проверки в main().

Единственная причина, я сделал это так, потому что я пишу тест для проверки CIDR адрес:

def test_input_for_valid_cidr_format(self): 
    cidr = '192.168.2.4/24' 
    self.assertTrue(self.scanner.isValidCIDR(cidr)) 

Есть ли необходимость писать такой тест?

+0

возможно дубликат (http://stackoverflow.com/questions/16414197/unit-test-wrapper-objects) –

+0

Лучше Вопрос в том, почему 'isValidCIDR' является методом экземпляра, поскольку' self' не используется в теле. По-видимому, нет причин, по которым оболочка должна существовать в первую очередь. – chepner

+0

@chepner это часть класса, я не включил никаких других кодов или деталей о системе, потому что нет никакой цели в этом. –

ответ

3

Другой ответ говорит:.

Главное преимущество имея тест является то, что позволяет переключаться из позже реализация и быть уверенным, что он по-прежнему будет работать как ожидается .

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

Я также написал бы тест, чтобы убедиться, что я не ошибаюсь в вызове обернутого кода (я делаю много таких). То есть, получая аргументы в неправильном порядке: [? Объектов тест-оболочки Unit]

def foo(x, y): 
    # Wrapped function. 
    ... 

def call_foo(x, y): 
    # My wrapper 
    return foo(y, x) 
+0

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

+0

Я согласен, что это вопрос предпочтения. И я тоже пошла по тому же пути, который вы указали. Что касается меня, я обычно более комфортно пишу тест. Для меня это не высокий приоритет, но я все равно. –

+1

+1 Этот метод объясняется [здесь] (http://blog.8thlight.com/eric-smith/2011/10/27/thats-not-yours.html) в разделе «Проверить оболочку с использованием сторонней библиотеки напрямую " – guillaume31

2

Главным преимуществом проведения теста является то, что вы можете позже отказаться от реализации и быть уверенным, что он все равно будет работать, как ожидалось.

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