如何通过绘图通过 Python doctest
How to pass Python doctest with plotting
当输出是 matplotlib 对象时,有没有办法或技巧通过 doctest?我也使用 Doctest 框架作为代码示例(不仅用于测试输出)
所以我的问题是这样的:
plt.plot(grid, pdf); plt.title('Random Normal 1D using Kernel1D.kde function'); plt.grid(); plt.show()
Expected nothing
Got:
[<matplotlib.lines.Line2D object at 0x00000208BDA8E2B0>]
Text(0.5, 1.0, 'Random Normal 1D using Kernel1D.kde function')
我希望在绘制任何内容时通过 doctest。谢谢
您可以使用 doctest.ELLIPSIS 来匹配任何字符串。
如果您想避免看到情节并直接转到评估报告,您的代码仍会在 plt.show()
中显示问题。为此,您可以使用 doctest.SKIP。检查以下示例:
import matplotlib.pyplot as plt
def test():
"""
Code example:
>>> 1 + 1
2
>>> plt.plot([1, 2, 3])
[...
>>> plt.show() #doctest: +SKIP
>>> plt.close()
"""
pass
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=True, optionflags=doctest.ELLIPSIS)
此returns以下报告:
Trying:
1 + 1
Expecting:
2
ok
Trying:
plt.plot([1, 2, 3])
Expecting:
[...
ok
Trying:
plt.close()
Expecting nothing
ok
1 items had no tests:
__main__
1 items passed all tests:
3 tests in __main__.test
3 tests in 2 items.
3 passed and 0 failed.
Test passed.
当输出是 matplotlib 对象时,有没有办法或技巧通过 doctest?我也使用 Doctest 框架作为代码示例(不仅用于测试输出)
所以我的问题是这样的:
plt.plot(grid, pdf); plt.title('Random Normal 1D using Kernel1D.kde function'); plt.grid(); plt.show()
Expected nothing
Got:
[<matplotlib.lines.Line2D object at 0x00000208BDA8E2B0>]
Text(0.5, 1.0, 'Random Normal 1D using Kernel1D.kde function')
我希望在绘制任何内容时通过 doctest。谢谢
您可以使用 doctest.ELLIPSIS 来匹配任何字符串。
如果您想避免看到情节并直接转到评估报告,您的代码仍会在 plt.show()
中显示问题。为此,您可以使用 doctest.SKIP。检查以下示例:
import matplotlib.pyplot as plt
def test():
"""
Code example:
>>> 1 + 1
2
>>> plt.plot([1, 2, 3])
[...
>>> plt.show() #doctest: +SKIP
>>> plt.close()
"""
pass
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=True, optionflags=doctest.ELLIPSIS)
此returns以下报告:
Trying:
1 + 1
Expecting:
2
ok
Trying:
plt.plot([1, 2, 3])
Expecting:
[...
ok
Trying:
plt.close()
Expecting nothing
ok
1 items had no tests:
__main__
1 items passed all tests:
3 tests in __main__.test
3 tests in 2 items.
3 passed and 0 failed.
Test passed.