Форум сайта python.su
Привет всем.
На днях смотрел на IDE eggy… Она ещё очень сырая, но в ней на напоролся на файлик Decorators.py и прозрел! Декораторы, это, блин, хорошо и удобно!
Немного подумав и поговорив над концепцией с Shiz'ом, я склепал небольшой и удобный модуль для лока методов. Он не блещет особой функциональностью, но зато прост и интуитивно понятен.
class C(object):
@lock.name_1
def mtd_1_1(self):
pass
@lock.name_1
def mtd_1_2(self):
pass
@lock.name_2
def mtd_2(self):
pass
Отредактировано (Янв. 11, 2009 05:04:58)
Офлайн
Занятно. Залил бы только на code.google.com чтоли, а то еще рапидшары здесь не хватало =)
Тесты можно было отдельным модулем, self.string = '' - в метод setUp запихнуть. Кстати, недавно перешел на nosetests - действительно намного удобнее, чем юниты.
Ну и -> This(The) module containS A simple lock decorator.
Офлайн
Немного косметики и вот он, наверное, окончательный вариант.
ZANРади такой мелочи создавать проект в гууглятине… ИМХО, это лишнее. А на zalil.ru пока особо рекламы нет, и работает как часы. При этом достаточно только файл укачать. Удобно.
Залил бы только на code.google.com чтоли, а то еще рапидшары здесь не хватало
ZANЗатупил… И это при том, что не курю!..
self.string = '' - в метод setUp запихнуть
Офлайн
Конечно, удобно-неудобно - это все субъективно, но мне в nose понравилось следующее:
- не нужно (хотя и можно) наследоваться от TestCase
- можно использовать assert
- тест генераторы
Типичный тест выглядит так:
from mymath.mymath import sqrt
def test_sqrt():
result = sqrt(4)
assert 2 == result, "2 was expected, got %s instead" %result
+mymath <- корневой каталог
| __init__.py
|
+ mymath <- пакет, который в финале помещается в site-packages
| | __init__.py
|
+ +test_mymath <- пакет для тестирования
| | __init__.py
| | test_sqrt.py
from mymath.mymath import sqr
def test_sqr_generator():
"""test sqr function with different argments"""
invalues = [1, 2, 3, 4, 5, 6, 7]
outvalues = [1, 4, 9, 16, 25, 36, 49]
zipped = zip(invalue, out)
for i, o in zipped:
yield check_sqr, i, o
def check_sqr(invalue, etalon):
result = sqr(invalue)
assert result == out, "%s was expected for %s, got %s instead" %(result, invalue, etalon)
Отредактировано (Янв. 13, 2009 11:33:36)
Офлайн
Рассмотрел ближе. Спасибо за наводку, будем использовать.
Но всё-равно для тестирования маленьких модулей лучше использовать юниты прямо в самом модуле. Такое себе независимое самотестирование.
Отредактировано (Янв. 20, 2009 09:25:43)
Офлайн
ZZZДля маленьких модулей лучше всего - doctests
Но всё-равно для тестирования маленьких модулей лучше использовать юниты прямо в самом модуле. Такое себе независимое самотестирование.
Офлайн
Угу. И как вы предлагаете его использовать в данном модуле?
Мне кажется, что doctests, это для для модулей типа def f(a, b): return a*b…
Офлайн