我正在测试一个从命令行获取登录名和密码的函数。以下代码按预期工作:
# ---------- 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
输入进行编码,但这会导致连接失败。我能想到的所有其他解决方案或多或少都能清楚地向任何可以阅读代码的人公开密码。
是否有一个存储密码的解决方案,以便连接功能可以使用它,任何读取源代码的人都无法读取它?
把它变成shell环境怎么样?
如果要运行测试,请先使用export PASSWORD=bar
。
在您的代码中,从os.environ['PASSWORD']
读取密码。