鼻子的单元测试:在编译时进行测试?

鼻子单元测试框架是否可以在模块的编译阶段执行测试?

实际上,我想用以下结构测试某些东西:

x = 123
# [x is used here...]
def test_x():
  assert (x == 123)
del x  # Deleted because I don't want to clutter the module with unnecessary attributes

鼻子测试告诉我x是未定义的,因为它显然在导入模块后运行test_x().有没有一种方法可以让鼻子在编译阶段执行测试,同时让模块在使用它们后释放不必要的资源?

解决方法:

一种简单的处理方法是拥有一个TESTING标志,并编写:

if not TESTING:
    del x

但是,由于测试将在与代码不同的环境下运行,因此您实际上将无法正确测试模块.

正确的答案是,您实际上不应该为手动清理变量而烦恼,除非您因为它们而实际上遇到了一些主要的性能问题.阅读Premature Optimization,这是一个重要的概念.解决您遇到的问题,而不是一天可能遇到的问题.

上一篇:如何使用–timid标志使用鼻子覆盖


下一篇:python-是否可以使用unit2运行doctests