使用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 mysql.connector.error.Errors as err:
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进行。
问题:
1我需要做哪些更改才能使此测试代码工作?
2.我还需要修补“urlparse”吗?
您还可以使用本question中描述的
modified_environ
上下文管理器来设置/还原环境变量。你可以这样做。只要用
dummy
参数调用conn
。或者
如果不想修改原始函数,请尝试以下操作:
为此,我发现当需要设置环境变量时,pytest's monkeypatch fixture会产生更好的代码:
相关问题 更多 >
编程相关推荐