среда, 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. Уровень вложенности не ограничен