鼻子单元测试框架是否可以在模块的编译阶段执行测试?
实际上,我想用以下结构测试某些东西:
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,这是一个重要的概念.解决您遇到的问题,而不是一天可能遇到的问题.