Данный:
def test_to_check_exception_is_thrown(self):
# Arrange
c = Class()
# Act and Assert
self.assertRaises(NameError, c.do_something)
Если do_something
выдает исключение тестовые передачи.
Но у меня есть свойство, и когда я заменяю c.do_something
с c.name = "Name"
Я получаю ошибку о своем Тестовом Модуле, не импортируемом, и Eclipse выделяется, равняется символу.
То, как я тестирую свойство, выдает исключение?
Править:
setattr
и getattr
плохо мне знакомы. Они, конечно, помогли в этом случае, спасибо.
assertRaises
ожидает вызываемый объект. Можно создать функцию и передать ее:
obj = Class()
def setNameTest():
obj.name = "Name"
self.assertRaises(NameError, setNameTest)
Другая возможность состоит в том, чтобы использовать setattr
:
self.assertRaises(NameError, setattr, obj, "name", "Name")
Ваш исходный код повышает синтаксическую ошибку, потому что присвоение является оператором и не может быть помещено в выражении.
Вы получаете ошибку, потому что это синтаксическая ошибка в Python, чтобы иметь задание внутри другого выражения. Например:
>>> print(foo = 'bar')
------------------------------------------------------------
File "<ipython console>", line 1
print(foo = 'bar')
^
SyntaxError: invalid syntax
Но выполнение этого в двух шагах работает нормально:
>>> foo = 'bar'
>>> print(foo)
bar
Чтобы проверить, что свойство бросает исключение, используйте блок Try:
try:
object.property = 'error'
except ExpectedError:
test_passes()
else:
test_fails()
Если требуется запретить пользователям видеть простой текстовый пароль, отправляемый из приложения через сеть в API, необходимо использовать SSL.
В случае декомпиляции необходимо сохранить хэш пароля в API, а не исходный пароль. См. пояснение здесь: http://phpsec.org/articles/2005/password-hashing.html .
-121--2449756-Ссылки на проекты хранятся в файле .csproj или .vbproj, который должен находиться в системе управления версиями. Файл .refresh совершенно неактуален и является только вспомогательным файлом для студии. Если создать локальный каталог для проекта или решения и сохранить все скомпилированные ссылки, еще не находящиеся в GAC, в этом каталоге, можно добавить этот каталог в систему управления версиями и ссылку непосредственно оттуда. Таким образом, все разработчики гарантированно будут иметь самую последнюю копию (из системы управления версиями) .dll при выполнении следующей компиляции, и это никогда не повлияет на/bin.
Переход ваших разработчиков на «Получение последней версии»... ты сам по себе для этого. Я до сих пор не понял.
Может быть, еще одна записка.
-121--3010609- Второй аргумент для assertRaises
должен быть вызываемым .
Оператор назначения (т.е. class.name = «Name»
) не является вызываемым, поэтому он не будет работать. Используйте setattr
для выполнения такого назначения, как
self.assertRaises(NameError, setattr, myclass, "name", "Name")
Кроме того, нельзя присвоить классу
, поскольку это ключевое слово.