Pytest макет скрыть ожидаемый пароль
Я тестирую функцию, которая получает логин и пароль из командной строки. Код ниже работает как ожидалось:
# ---------- Function part ----------
import getpass
def my_function():
login = input('Login: ')
password = getpass.getpass()
# example to simulate connection to a identification server
if login+password == 'foobar':
return True
else:
return False
# ---------- Test part ----------
from unittest.mock import patch
@patch("getpass.getpass")
@patch("builtins.input")
def test_my_function(input, getpass):
input.return_value = 'foo'
getpass.return_value = 'bar'
assert my_function()
Теперь я хотел бы скрыть ожидаемый пароль (bar
) чтобы опубликовать тесты в публичном хранилище.
Я думал о кодировании getpass
вход, но это приведет к сбою соединения. И все другие решения, которые я могу придумать, раскрывают пароль более или менее четко любому, кто может прочитать код.
Есть ли решение для хранения пароля, чтобы его можно было использовать функцией соединения, и чтобы он не был доступен для чтения всем, кто читает источники?
1 ответ
Решение
Как насчет сделать это оболочкой?
Если вы хотите запустить свой тест, используйте export PASSWORD=bar
первый.
В вашем коде прочитайте пароль от os.environ['PASSWORD']
,