Я создал это как ответ на ваш вопрос и свое собственное замешательство. Я надеюсь, что это помогает. Обратите внимание на PYTHONPATH как в командной строке py.test, так и в tox.ini.
https://github.com/jeffmacdonald/pytest_test
В частности: вы должны сообщить py.test и tox, где найти модули, которые вы включаете.
С помощью py.test вы можете сделать это:
PYTHONPATH=. py.test
И с помощью tox добавьте это в ваш tox.ini:
[testenv]
deps= -r{toxinidir}/requirements.txt
commands=py.test
setenv =
PYTHONPATH = {toxinidir}
Вы можете присвоить свой update
объект запроса, который предотвращает обновление, если name
уже присутствует в profile_set
. В оболочке:
db.coll.update(
{_id: id, 'profile_set.name': {$ne: 'nick'}},
{$push: {profile_set: {'name': 'nick', 'options': 2}}})
Таким образом, это будет выполнять только $push
для документа с сопоставлением _id
и где нет элемента profile_set
, где name
есть 'nick'
.