Существует-f опция к umount, который можно попробовать:
umount -f /mnt/fileshare
Вы указывающий опцию '-t сиф смонтироваться? Также удостоверьтесь, что Вы не указываете 'трудную' опцию смонтироваться.
можно также хотеть рассмотреть fusesmb, так как файловая система будет работать в пространстве пользователя, можно уничтожить его точно так же, как любой другой процесс.
Я думаю, это потому, что assert raises принимает только вызываемые. Он проверяет, вызывает ли вызываемый объект исключение, а не сам оператор.
self.assertRaises(AttributeError, getattr, branch[0], "childrennodes")
должен работать.
РЕДАКТИРОВАТЬ:
Поскольку THC4k правильно говорит, он собирает операторы во время сбора и затем выдает ошибку, а не в время тестирования.
Также это причина, по которой мне нравится нос, у него есть декоратор (поднимает), который полезен и понятнее для такого рода тестов.
@raises(AttributeError)
def test_1(self)
branch[0].childrennodes
Когда тест запущен, перед вызовом self.assertRaises, Python должен найти значение всех аргументов метода. При этом он оценивает branch[0].children_nodes
, что вызывает ошибку AttributeError. Поскольку мы еще не вызвали assertRaises, это исключение не будет поймано, что приведет к неудаче теста.
Решение состоит в том, чтобы обернуть branch[0].children_nodes
в функцию или лямбду:
self.assertRaises(AttributeError, lambda: branch[0].children_nodes)
assertRaises также можно использовать в качестве менеджера контекста (начиная с Python 2.7, или в PyPI пакете 'unittest2'):
with self.assertRaises(AttributeError):
branch[0].children_nodes
# etc
Это хорошо, потому что его можно использовать для произвольных блоков кода в середине теста, вместо того, чтобы создавать новую функцию только для определения блока кода, к которому он применяется.
Это может дать вам доступ к поднятому исключению для дальнейшей обработки, если это необходимо:
with self.assertRaises(AttributeError) as cm:
branch[0].children_nodes
self.assertEquals(cm.exception.special_attribute, 123)