草庐IT

python - 涉及转义字符的 Doctest

有一个函数fix(),作为将字符串写入文本文件的输出函数的辅助函数。deffix(line):"""returnsthecorrectedline,withallapostrophesprefixedbyanescapecharacter>>>fix('DOUG\'S')'DOUG\\\'S'"""if'\''inline:returnline.replace('\'','\\\'')returnline打开doctests,我收到以下错误:Failedexample:fix('DOUG'S')Exceptionraised:Traceback(mostrecentcalllast):

python - Doctest 失败,退出代码为零

在我的测试代码中,我的doctest失败了,但脚本以零返回值退出,这导致CI​​运行通过,这不是预期的。这是doctest模块的正确行为吗?我的脚本结束于:if__name__=='__main__':importdoctestdoctest.testmod()输出如下:**********************************************************************File"test/test.py",line7,in__main__Failedexample:f(1,0)Expected:-----type:value:integerdiv

python - 有没有办法使用 doctest 和 sphinx 来测试和记录命令行应用程序?

我有一个Python模块,我正在为其编写一个使用Sphinx的教程,包括doctests。这个模块带有一些辅助程序。我想在文档中包含这些帮助程序并且让doctest检查标准输出是否在当前程序版本和文档之间同步。我想我可以使用sh模块或popen来检查给定程序的标准输出,但我希望这些技巧不要出现在文档中,否则非程序员用户肯定会迷路。有什么办法可以实现吗? 最佳答案 doctest模块仅检查可以从python交互式提示运行的语句。可以使用subprocess从python交互式提示调用命令行工具模块:#CreateHelperFunct

Python doctest 异常

因此,我正在尝试将异常与doctest匹配。>>>api=Api("foo","bar")#doctest:+IGNORE_EXCEPTION_DETAILTraceback(mostrecentcalllast):...AuthError问题是这适用于py2.7但不适用于python3。异常跟踪的格式已更改,因此现在它包含完整的模块名称。IE。在python3中,我有package.module.AuthError。有没有办法使两者都匹配?似乎IGNORE_EXCEPTION_DETAIL在这里没有效果。 最佳答案 这被相关问题的

python doctest : expected result is the same as the "got" result but the test failed

我正处于使用python作为软件QA工具的学习阶段。我编写了下一个简单测试,以便在文本文件编号矩阵中找到字母“a”。问题是测试失败,即使期望值等于我得到的结果。这是为什么呢?你能告诉我我做错了什么吗?测试脚本:fin=open("abc.txt","r")arr_fin=[]forlineinfin:arr_fin.append(line.split())printarr_finforrowinarr_fin:arr_fin_1="".join('{0:4}'.format(ior"")foriinrow)printarr_fin_1deffind_letter(x,arr_fin_1

python - 有没有办法在 python doctest 中重新启动或重置 python 解释器?

我正在写一个简短的教程,并希望能够使用python的doctest运行其中的示例python-mdoctestfoo.txt教程中有一点我想开始使用一个新的、干净的python解释器。是否有执行此操作的机制? 最佳答案 您可以使用代码模块创建一个新的解释器。您甚至可以复制全局/局部变量。Blender文档中有一个很好的示例here他们建议如下:在脚本中间,您可能想要检查变量、运行函数和检查流程。importcodecode.interact(local=locals())如果你想访问全局变量和局部变量运行这个:importcoden

python - 使用 Python doctest 的多行语句

是否可以使用pythondoctest处理多行语句?例如,以下内容在doctest中不起作用:>>>forsin[1,2,3]:...fortin[4,5,6]:...print(s*t)我需要从doctest执行以上三个语句。 最佳答案 你可能做错了什么。以下是正确的示例。测试.py:""">>>forsin[1,2,3]:...fortin[4,5,6]:...prints*t45681012121518"""它工作得很好:$python-mdoctest-vtest.pyTrying:forsin[1,2,3]:fortin[

python - 我可以让 pytest doctest 模块忽略一个文件吗?

我们使用pytest来测试我们的项目,并默认启用--doctest-modules以收集整个项目中的所有doctests。但是有一个wsgi.py可能不会在测试收集期间导入,但我无法让pytest忽略它。我试着把它放在conftest.py的collect_ignore列表中,但显然doctest模块不使用这个列表。唯一可行的是将wsgi.py的整个目录放入pytest配置文件的norecursedirs中,但这显然隐藏了整个目录,我不想。有没有办法让doctest模块只忽略某个文件? 最佳答案 作为MasterAndrey已经提到

python - 调用 Python doctest 时如何启用省略号?

在Python(3.3.2)doctest中,省略号(...)可以匹配任何字符串。所以,对于下面的代码deffoo():""">>>foo()hello..."""print("helloworld")当运行doctest时,它不应该引发任何错误。但是$python-mdoctestfoo.py**********************************************************************File"./foo.py",line3,infoo.fooFailedexample:foo()Expected:hello...Got:hellowor

python - 是否可以在模块中仅使用 doctest 测试特定功能?

我正在尝试使用doctest模块在Python中进行测试。目前我在做为函数编写测试。实现功能代码。如果测试通过,编写更多测试和更多代码。完成该功能后,继续执行下一个功能。因此,在同一个模块中执行3或4个(独立的)函数并进行多次测试后,我通过doctest获得了巨大的输出。这有点烦人。有没有办法告诉doctest“不要测试函数a()、b()和c()",以便它只运行未标记的函数?我只找到了doctest.SKIP标志,这不足以满足我的需要。我将不得不把这个标志放在很多行中。如果我想再次检查一个标记函数,我将不得不手动检查代码并删除我在其中设置的任何标志。 最佳答