Я выполняю простой скрипт тестирования с pytest.Я проверяю, удалось ли создать соединение с базой данных.Функция, которая создает соединение с базой данных, требует имени пользователя и пароля.Во время тестирования pytest распечатывает имя пользователя и пароль.Очевидно, я не хочу, чтобы пароли выводились на консоль!Как я могу предотвратить это?
Я пробовал несколько решений, включая использование contextlib и пользовательских NullWriters, которые подавляют stderr и / или stdout (например, здесь https://stackoverflow.com/a/1810086). Однако, похоже, что ни один из них не имеет никакого эффекта.
Это тестовая функция:
def test_make_db2_connection():
# get username and password from the environmental variables
username = os.environ['username']
password = 'my_password' # would be: os.environ['pwd']
# create a connection with the database
connection = make_db2_connection(username, password)
# assert if the connection exists
assert connection, "Connection wasn't created."
См. Вывод pytest ниже. Как вы можете видеть, мое имя пользователя и (тестирующий) пароль напечатаны. Это то, что я хочу предотвратить.
============================================================================================================ FAILURES ============================================================================================================
____________________________________________________________________________________________________ test_make_db2_connection ____________________________________________________________________________________________________
def test_make_db2_connection():
# get username and password from the environmental variables
username = os.environ['username']
password = 'my_password' # would be: os.environ['pwd']
# create a connection with the database
> connection = make_db2_connection(username, password)
test_file.py:16:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
username = 'E001703', password = 'my_password'
def make_db2_connection(username, password):
"""Creates a connection with the database"""
dbalias = os.environ['dbalias']
> connection = connect(dbalias, username, password)
SQLCODE=-30082on: [IBM][CLI Driver] SQL30082N Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001
=================================================================================================== 1 failed in 14.19 seconds ====================================================================================================