作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的函数从文件中读取,需要以独立于绝对路径的方式编写 doctest。编写 doctest 的最佳方法是什么?编写临时文件的成本很高,而且不是万无一失的。
最佳答案
您可以有一个采用路径的参数,用下划线标记以声明它仅供内部使用。然后,该参数应默认为非测试模式下的绝对路径。命名的临时文件是解决方案,使用 with
语句应该是防故障的。
#!/usr/bin/env python3
import doctest
import json
import tempfile
def read_config(_file_path='/etc/myservice.conf'):
"""
>>> with tempfile.NamedTemporaryFile() as tmpfile:
... tmpfile.write(b'{"myconfig": "myvalue"}') and True
... tmpfile.flush()
... read_config(_file_path=tmpfile.name)
True
{'myconfig': 'myvalue'}
"""
with open(_file_path, 'r') as f:
return json.load(f)
# Self-test
if doctest.testmod()[0]:
exit(1)
对于 Python 2.x,doctest 会有所不同:
#!/usr/bin/env python2
import doctest
import json
import tempfile
def read_config(_file_path='/etc/myservice.conf'):
"""
>>> with tempfile.NamedTemporaryFile() as tmpfile:
... tmpfile.write(b'{"myconfig": "myvalue"}') and True
... tmpfile.flush()
... read_config(_file_path=tmpfile.name)
{u'myconfig': u'myvalue'}
"""
with open(_file_path, 'r') as f:
return json.load(f)
# Self-test
if doctest.testmod()[0]:
exit(1)
关于python - 如何为从文件读取的函数编写 doctest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831701/
我是一名优秀的程序员,十分优秀!