2

我正在尝试在 qpython 中使用 doctest。但是脚本不起作用,在PC环境中可以。

这与我在 PC 环境中的脚本只有两行不同:import sl4a droid = sl4a.Android()

在qpython中运行脚本后,我可以看到docctest的日志,但是测试用例似乎没有被测试。我得到的味精是:11 项没有测试:... 11 项中有 0 项测试。0 次通过,0 次失败。考试通过了

我错过了什么重要的事情吗?谢谢你的帮助!

4

2 回答 2

1

那是因为 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-26T05:01:37.993 回答
0

也许你找到了解决方案,但前几天我对 QPython 有过类似的体验。似乎你不能(还)在 QPython 的控制台中使用 Player 或 Pyjnius。将脚本作为 Kivy 应用程序运行可以导入 Plyer 或 Pyjnius。尝试添加以下行:

#-*-coding:utf8;-*-
#qpy:2
#qpy:kivy
于 2018-07-29T18:24:18.127 回答