我希望我的软件包在rapidjson
和不使用的情况下都可以使用,所以我有以下代码:
try:
import rapidjson as json # https://github.com/python-rapidjson/python-rapidjson
def pp_json(x, fd):
"Pretty-print object to stream as JSON."
return json.dump(x, fd, sort_keys=True, indent=1)
except ImportError:
import json # https://docs.python.org/3/library/json.html
def pp_json(x, fd):
"Pretty-print object to stream as JSON."
return json.dump(x,fd,sort_keys=True,indent=1,separators=(',',':'))
我的问题是:如何在有和没有
rapidjson
的情况下测试此文件?我宁愿不手动做
$ coverage3 run --source=pyapp -m unittest discover --pattern *_test.py
$ pip3 uninstall python-rapidjson
$ coverage3 run --source=pyapp -m unittest discover --pattern *_test.py
$ pip3 install python-rapidjson
PS。我实际上不确定这样做是否值得,因此我会接受一个答案,告诉我将
python-rapidjson
添加到requirements.txt
而忘了整个过程。 ;-) 最佳答案
使用mock library,可以通过修补sys.modules
字典来模拟在特定测试中未安装RapidJSON。
def test_with_import_error(self):
with mock.patch.dict('sys.modules', {'rapidjson': None}):
#test code with ImportError here
关于python - 有无软件包依赖项的测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51200093/