我正在使用nose来测试需要用户名和密码的Python类。为测试模块提供用户名和密码对的最佳做法是什么?我希望测试过程对于另一位工程师来说是直观的,我不能以明文形式存储任何敏感信息。有什么想法吗?
答案 0 :(得分:1)
最常见的选项是在env变量中提供数据。
import os
password = os.environ['PASSWORD']
username = os.environ['USERNAME']
$ USERNAME=user PASSWORD=qwerty nose
注意:root和进程所有者可以读取环境变量。通过命令行提供的变量将使用命令显示在shell历史记录中。
大多数CI系统提供选项(内部或通过插件)来存储和传递凭证到测试/构建计划,在日志中掩盖它们。例如,Jenkins有许多插件Mask Password,Credentials Binding。如果名称有password
个字,Atlassian的Bamboo默认会屏蔽所有计划变量。就个人而言,我发现最有用的是Travis'encrypted variables,凭据与回购/提交相关,而不是计划。