编写需要用户名和密码的Python功能测试

时间:2017-11-06 18:26:06

标签: python python-3.x security functional-testing python-unittest

我有一个用Python 3编写的API包装器类WfcAPI,我想用PyUnit进行测试。

setUpClass() WfcAPI涉及登录外部API服务器。当前的功能测试实现具有密码obfuscated with Base64 encoding,但出于安全原因,这来自理想的解决方案。

import unittest
import base64
from pykronos import WfcAPI

class Test(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        password = base64.b64decode("U29tZVBhc3N3b3Jk").decode("utf-8")
        self.kronos = WfcAPI("SomeUsername", password) 

我希望能够为我的API包装器快速运行功能测试,但我也想确保我的用户名和密码不包含在代码中。

如何为需要用户名和密码的操作设置Python功能测试?

1 个答案:

答案 0 :(得分:2)

只是为了澄清:如果它是一个单元测试,你不应该对真正的外部API进行测试,你应该假装它的响应。单元测试应该只关注测试对象的逻辑(WfcAPI),而不是它的子依赖。

现在,如果您执行功能测试,将实际数据发送到API,您可以通过将凭据存储在.env文件中来保护您的凭据,该文件不会与其余代码一起提交

This python library提供了该功能,并在其自述文件中为您提供了示例。你最终会得到这样的东西:

# .env

PASSWORD=some_password
USERNAME=SomeUsername

然后在settings.py

PASSWORD = os.environ.get("PASSWORD")
USERNAME = os.environ.get("USERNAME")