我正在尝试在 qpython 中使用 doctest。但是脚本不起作用,在PC环境中可以。
这与我在 PC 环境中的脚本只有两行不同:import sl4a droid = sl4a.Android()
在qpython中运行脚本后,我可以看到docctest的日志,但是测试用例似乎没有被测试。我得到的味精是:11 项没有测试:... 11 项中有 0 项测试。0 次通过,0 次失败。考试通过了
我错过了什么重要的事情吗?谢谢你的帮助!
那是因为 qpython 在 (-OO) 上运行带有优化的 python,它删除了文档字符串,所以 doctest 什么也看不到。以下技巧为您提供了几乎所有功能。基本上,它只是使用 ast 模块解析源文件以获取文档字符串,然后将其放入 __test__ 字典中。
def setupDoctest():
global __test__
import ast
__test__ = {}
parsed = ast.parse(open(__file__).read(), "doctest")
doctypes = ast.Module, ast.FunctionDef, ast.ClassDef
for node in ast.walk(parsed):
if isinstance(node, doctypes):
d = ast.get_docstring(node, True)
if d:
__test__[getattr(node, "name", "module")] = d
只需在调用 doctest.testmod 之前调用它,它就会运行文档字符串。
也许你找到了解决方案,但前几天我对 QPython 有过类似的体验。似乎你不能(还)在 QPython 的控制台中使用 Player 或 Pyjnius。将脚本作为 Kivy 应用程序运行可以导入 Plyer 或 Pyjnius。尝试添加以下行:
#-*-coding:utf8;-*-
#qpy:2
#qpy:kivy