如何向鼻子提供敏感数据

时间:2016-05-11 20:59:00

标签: python unit-testing testing nose

我正在使用nose来测试需要用户名和密码的Python类。为测试模块提供用户名和密码对的最佳做法是什么?我希望测试过程对于另一位工程师来说是直观的,我不能以明文形式存储任何敏感信息。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

最常见的选项是在env变量中提供数据。

import os

password = os.environ['PASSWORD']
username = os.environ['USERNAME']

$ USERNAME=user PASSWORD=qwerty nose

注意:root和进程所有者可以读取环境变量。通过命令行提供的变量将使用命令显示在shell历史记录中。

手动测试

  • 鼓励(强制)开发人员获取自己的凭据,
  • 加密凭据;除其他外,我会看看git-secret。 Tox可以用来自动化这一点。

自动化测试

大多数CI系统提供选项(内部或通过插件)来存储和传递凭证到测试/构建计划,在日志中掩盖它们。例如,Jenkins有许多插件Mask PasswordCredentials Binding。如果名称有password个字,Atlassian的Bamboo默认会屏蔽所有计划变量。就个人而言,我发现最有用的是Travis'encrypted variables,凭据与回购/提交相关,而不是计划。