Python Pytest模拟隐藏预期密码
我正在测试一个从命令行获取登录名和密码的函数。以下代码按预期工作:Python Pytest模拟隐藏预期密码,python,mocking,pytest,getpass,Python,Mocking,Pytest,Getpass,我正在测试一个从命令行获取登录名和密码的函数。以下代码按预期工作: # ---------- Function part ---------- import getpass def my_function(): login = input('Login: ') password = getpass.getpass() # example to simulate connection to a identification server if login+pas
# ---------- 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']
读取文件中的密码+不要对该文件进行版本设置?这是一个简单而显而易见的答案!这完全符合我的需要。Thx这是存储一些敏感值(如DB的密码、令牌等)的常用方法。