最佳答案
使用 mock 进行单元测试 con () :
App 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"
Test.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。连接。
问题:
要使这个测试代码工作,我需要做哪些更改?
我也要修补 urlparse
吗?