在python单元测试运行时期间重置全局变量

时间:2018-01-25 14:44:32

标签: python python-3.x unit-testing

我目前正在为我正在使用的公司编写一些Python(使用3.5版本)软件的测试,但我遇到了一个问题,我目前认为这是因为全局变量< / em>如果我可以称之为。

软件架构非常模块化,因此为了测试单个模块,创建了一个单独的测试文件(可能称为test_somemodule_py),其中包含一个扩展unittest.TestCase的类。

注意我在这里称之为modules的不是真正的Python模块,而是应用程序模块

所有测试都是通过包含自定义加载器的单个转轮脚本触发的:

def load_tests(loader, tests, pattern):
suite = unittest.TestSuite()
for all_tests in loader.discover('tests', pattern='test_*.py'):
    for test_suite in all_tests:
        suite.addTests(test_suite)

return suite

在实际运行期间,所有单个模块都保存(包含)在类似主包的包装器中,基本上是单例。

现在我的问题是每当我将测试作为单个文件运行(将加载程序从test_*.py更改为test_somemodule.py)时,所有测试都会成功,但是如果它们一起运行(保留{{{ 1}}模式),一些测试开始失败。

我很确定当我没有将主包装器实现为单例时,情况从未如此,但应用程序功能和体系结构确实需要这种方法。由于我怀疑只创建了一个实例,有人可以告诉我如何最好地解决这个问题吗?

我的理论是,如果有一种方法可以重置所有&#39;全局变量&#39;到初始状态,它会像魅力一样工作。或者可能存在某种隔离内存的方法,然后在测试超出范围时将其丢弃。

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

为什么不这样做?

textaAreaField.addEventListener('keypress', function(e) {
    if(e.ctrlKey) {     
      this.value += "\n";
    }
});