python doctest默认命名空间
在我的模块的文档测试中,我想使用完整的命名空间引用我的模块,例如:
hp.myfunc(1)
并且我想通过
import healpy as hp
在每个文档测试中编写:来避免文档测试混乱。
如果我运行 doctest.testmod,我知道我可以使用globs
关键字来提供此功能,而如果我运行nose,我可以使用setup
函数。
是否有另一种标准方法可以同时使用两者?
In the doctests of my module I would like to reference my module with the full namespace, for example:
hp.myfunc(1)
And I would like to avoid cluttering the doctests by writing:
import healpy as hp
in each of the doctests.
if I run doctest.testmod, I know I can use the globs
keyword to provide this, while if I run nose, I can use the setup
function.
Is there another standard way that could work with both?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你如何运行文档测试(即没有鼻子)?如果您在尝试运行它们时通过 cd 进入包目录,您将遇到问题(如果您正在进行完全导入)。
我能够获得一个简单的 doctest(具有完全限定的导入),同时使用鼻子测试和内置的 doctest 运行器运行。这是我的设置:
项目结构:
这是我的“mod.py”文件的内容:
来自“.”目录(项目根目录),我现在可以运行测试:
现在nosetests:
如果我尝试从“mypackage”目录中运行doctest,我会收到一个错误(我怀疑这就是您的情况)。
最后,我认为这不会有什么不同,但我正在运行 Python 2.7.2
How are you running the doctests (without nose, that is)? If you are cd'd into the package directory when you attempt to run them, you will run into problems (if you are doing a full import, that is).
I was able to get a simple doctest (with fully-qualified imports) running with both nosetests and the builtin doctest runner. Here's my setup:
Project structure:
Here are the contents of my 'mod.py' file:
from the '.' directory (project root), I can now run tests:
And now the nosetests:
If I try to run the doctest from within the 'mypackage' directory, I get an error (which is, I suspect, what's happening in your case).
Finally, I don't think this should make a difference, but I'm running Python 2.7.2
我不知道鼻子,但您可以在
testmod()
和testfile()
中使用globs
参数。这是一个简单的模块(称为 foobar.py),请注意,我不导入 os:
您可以像这样测试该模块(控制台示例):
您的示例应该说:
I don't know about nose, but you can use the
globs
argument intestmod()
andtestfile()
.Here's a simple module (called foobar.py), note that I do not import
os
:You can test the module like this (console example):
Your example should say: