среда, 25 декабря 2013 г.

@staticmethod in nosetests

Оказывается nosetests 1.2.1 имеет проблемы с обработкой функций обернутых staticmethod декораторами.

При запуске класса он выбрасывает
Traceback (most recent call last):
  File "PYTHON/site-packages/nose/loader.py", line 495, in makeTest
    return self._makeTest(obj, parent)
  File "PYTHON/site-packages/nose/loader.py", line 542, in _makeTest
    return self.loadTestsFromTestCase(obj)
  File "PYTHON/site-packages/nose/loader.py", line 466, in loadTestsFromTestCase
    return super(TestLoader, self).loadTestsFromTestCase(testCaseClass)
  File "PYTHON/unittest.py", line 547, in loadTestsFromTestCase
    testCaseNames = self.getTestCaseNames(testCaseClass)
  File "PYTHON/site-packages/nose/loader.py", line 112, in getTestCaseNames
    cases = filter(wanted, dir(testCaseClass))
  File "PYTHON/site-packages/nose/loader.py", line 111, in wanted
    return sel.wantMethod(item)
  File "PYTHON/site-packages/nose/selector.py", line 175, in wantMethod
    plug_wants = self.plugins.wantMethod(method)
  File "PYTHON/site-packages/nose/plugins/manager.py", line 99, in __call__
    return self.call(*arg, **kw)
  File "PYTHON/site-packages/nose/plugins/manager.py", line 167, in simple
    result = meth(*arg, **kw)
  File "PYTHON/site-packages/nose_unittest/plugin.py", line 25, in wantMethod
    if not issubclass(method.im_class, unittest.TestCase):
  File "PYTHON/site-packages/nose/pyversion.py", line 93, in __getattr__
    return getattr(self._func, attr)
AttributeError: 'function' object has no attribute 'im_class'
 После легкого оборачивания строки 93 из PYTHON/site-packages/nose/pyversion.py узнаем, что именно метод тестового класса, обернутый декоратором staticmethod вызвал проблему. Для меня было не критично и я просто убрал это. 

вторник, 5 февраля 2013 г.

Certified Scrum Master

Не люблю хвастаться. Потому просто поделюсь


Как? Двухдневный тренинг с единственным в Украине сертифицированным русскоязычным скрам-тренером Алексеем Кривицким (а в мире всего 2), час тест, некоторое количество инвестированных денег и вот :)

пятница, 1 февраля 2013 г.

XPath как условие для выбора элемента с помощью XPath

Недавно обнаружил для себя интересный вариант записи xpath. Т.е. он не такой и новый, но я увидел первый раз и не могу не поделиться.

//tr[td[2]//div[text()='some text']]

Сначала меня смутила такая запись, тем более, что на ней у меня и падал тест. Но потом немного покопавшись я понял, что это лаконично как все гениальное:
выбрать такую строку таблицы (tr), у которой во второй ячейке есть на любом уровне блок с текстом 'some text'

Т.е. накладывается не просто условия значения атрибута, а условия наличия в потомках определенного элемента через задание его xpath. Уровень вложенности не ограничен

вторник, 20 ноября 2012 г.

среда, 14 ноября 2012 г.

Лидер vs. Менеджер


Чем отличаются лидеры от менеджеров? Лидеры вводят перемены. Там, где можно обойтись без введения перемен, достаточно менеджмента.
Основное различие между менеджерами и лидерами лежит в их глубинных представлениях о хаосе и порядке. Лидеры легко мирятся с недостатком упорядоченности. Менеджеры, напротив, стремятся к стабильности и контролю.

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

(цитата Уоррен Беннис)