我正在尝试在qpython中使用doctest。但是脚本不起作用,这在PC环境下是可以的。
它与PC环境中的my脚本只有两行不同: import sl4a droid = sl4a.Android()
在qpython中运行脚本后,我可以看到docctest的日志,但测试用例似乎没有经过测试。我得到的消息是: 11个项目没有测试:……11个项目中0个测试。0通过,0失败。测试通过
我错过了什么重要的东西吗?谢谢你的帮忙!
发布于 2018-07-26 13:01:38
这是因为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之前调用它,它就会运行文档字符串。
发布于 2018-07-30 02:24:18
也许你找到了一个解决方案,但前几天我对QPython有过类似的体验。似乎你还不能在控制台中使用QPython的播放器或Pyjnius。将脚本作为Kivy应用程序运行,可以导入Plyer或Pyjnius。尝试添加以下行:
#-*-coding:utf8;-*-
#qpy:2
#qpy:kivy
https://stackoverflow.com/questions/42604442
复制相似问题