Двумя вещами могут быть равные, но различные объекты. AreNotEqual проверяет объекты значения через тест равенства, в то время как AreNotSame проверяет, что они не тот же точный объект.
очевидно, почему мы хотели бы протестировать это вещи AreNotEqual (мы заботимся о протестированных значениях); что относительно AreNotSame? Полноценность этого в тестировании найдена, когда Вы раздали ссылки и хотите удостовериться, что после того, как Ваша перестановка сделана, что две ссылки являются все еще тем же объектом.
В случае реального мира, мы используем большое кэширование объектов смягчить распространения в прямом и обратном направлениях к базе данных. После того, как объект был передан к системе кэша, наши модульные тесты гарантируют, чтобы в некоторых случаях мы возвратили тот же объект (кэш был допустим), и в других случаях мы возвращаемся новый объект (кэш делался недействительным). Обратите внимание, что AreNotEqual не был бы необходимый быть достаточным в этом случае. Если объект имел новую метку времени в базе данных, уже , данные "не достаточно отличались" для проваливания теста равенства, AreNotEqual не заметит, что мы обновились объект .
Используйте oauth , чтобы сохранить токен OAuth2, чтобы вам не нужно было повторно вводить пароль.
Для windows 7: .appcfg_cookies в C: \ Users \ username \ .appcfg_cookies
Прочие советы и рекомендации хитрость: использование командной строки, как показано ниже:
Чтобы файл appcfg.py принимал --password в командной строке вместо того, чтобы запрашивать его:
Изменение: * appengine / google_appengine / google / appengine / tools / appcfg.py *
добавить следующее в раздел parser.add_option:
parser.add_option("-p","--password", action="store", dest="password",
metavar="PASSWORD", default=None,
help="The password")
Затем измените функцию GetUserCredentials:
def GetUserCredentials():
"""Prompts the user for a username and password."""
email = self.options.email
if email is None:
email = self.raw_input_fn("Email: ")
password = self.options.password
if password is None:
password = self.raw_input_fn("Password: ")
# password_prompt = "Password for %s: " % email
# if self.options.passin:
# password = self.raw_input_fn(password_prompt)
# else:
# password = self.password_input_fn(password_prompt)
return (email, password)
Вот и все Теперь вы можете позвонить:
appcfg.py update demos/guestbook --email=email@gmail.com --password=xxxx
Ссылка: http://samalolo.blogspot.com/2009/04/appcfgpy-tweak-to-allow-passing.html