编写需要用户名和密码的 Python 功能测试
Writing a Python functional test which requires a username and password
我有一个 API 包装器 class WfcAPI
写在 Python 3 中,我想使用 PyUnit.
进行测试
WfcAPI
的 setUpClass()
涉及登录到外部 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 功能测试?
澄清一下:如果它是一个单元测试,你不应该针对真正的外部 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")
我有一个 API 包装器 class WfcAPI
写在 Python 3 中,我想使用 PyUnit.
WfcAPI
的 setUpClass()
涉及登录到外部 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 功能测试?
澄清一下:如果它是一个单元测试,你不应该针对真正的外部 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")