使用 mock 对 conn() 进行单元测试:
应用程序.py
import mysql.connector
import os, urlparse
def conn():
if "DATABASE_URL" in os.environ:
url = urlparse(os.environ["DATABASE_URL"])
g.db = mysql.connector.connect(
user=url.username,
password=url.password,
host=url.hostname,
database=url.path[1:],
)
else:
return "Error"
测试.py
def test_conn(self):
with patch(app.mysql.connector) as mock_mysql:
with patch(app.os.environ) as mock_environ:
con()
mock_mysql.connect.assert_callled_with("credentials")
错误:未调用 断言 mock_mysql.connect.assert_called_with
。
我认为这是因为“Database_url”不在我的补丁中 os.environ
并且因为没有对 mysql_mock.connect 进行测试调用。
问题:
我需要做哪些更改才能使此测试代码正常工作?
我还必须打补丁
urlparse
吗?
原文由 immrsteel 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以尝试 unittest.mock.patch.dict 解决方案。只需使用
dummy
参数调用conn
即可:或者,如果您不想修改原始功能,请尝试以下解决方案: