我正在尝试在qpython中使用医生。但是该脚本不起作用,在PC环境中可以。
与PC Enviroment中的My脚本不同只是两行:导入SL4Adroid = sl4a.android()
在Qpython中运行脚本后,我可以看到Docctest的日志,但是测试案例似乎没有进行测试。我得到的味精是:11个项目没有测试:...在11个项目中进行0个测试。0通过,0命中。测试通过
我错过了任何重要的事情吗?感谢您的帮助!
那是因为Qpython在(-OO)上进行了优化的python,它可以删除Docstrings,因此Doctest不会看到任何东西。以下技巧几乎可以使您所有功能回来。基本上,它只是用AST模块解析源文件以获取DOCSTRINGS,然后将其放入__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之前,请打电话给它,它将运行docstrings。
也许您找到了解决方案,但是前几天我对Qpython也有类似的经历。似乎您还不能(尚未)使用Qpython在控制台中使用播放器或Pyjnius。作为Kivy应用程序运行脚本会导入Plyer或Pyjnius工作。尝试添加以下行:
#-*-coding:utf8;-*-
#qpy:2
#qpy:kivy