我希望我的软件包在使用rapidjson
和不使用{{3}}的情况下都可以使用,所以我有以下代码:
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
而忘了整个事情。 ;-)
答案 0 :(得分:0)
使用mock library,可以通过修补sys.modules
字典来模拟在特定测试中未安装RapidJSON。
def test_with_import_error(self):
with mock.patch.dict('sys.modules', {'rapidjson': None}):
#test code with ImportError here