编写单元测试:我可以在类级别导入我需要的所有模块,还是必须在每次测试中再次导入它们?

时间:2017-08-08 19:01:55

标签: python unit-testing python-import

我尝试使用unittest为某些代码编写单元测试:

https://docs.python.org/3/library/unittest.html

假设我写的每个测试都需要导入mathosdatetime模块。现在我在我写的每个测试中导入它们:

#...code for which I'm writing the unit tests...
import unittest

class TestMyCode(unittest.TestCase):

    def test_method_1(self):
        # unit test for method 1
        import math
        import os
        import datetime
        .
        .

    def test_method_2(self):
        # unit test for method 2
        import math
        import os
        import datetime
        .
        .

if __name__ == "__main__":
    unittest.main()

为避免代码重复,是否可以在类级别导入一次?这样:

#...code for which I'm writing the unit tests...
import unittest

class TestMyCode(unittest.TestCase):

    import math
    import os
    import datetime

    def test_method_1(self):
        # unit test for method 1
        .
        .

    def test_method_2(self):
        # unit test for method 2
        .
        .

if __name__ == "__main__":
    unittest.main()

导致错误

NameError: name 'math' is not defined

所以它显然不是正确的做法。

编辑为了清楚起见,我编写单元测试的代码(实际上只由两个方法组成)和(两个)单元测试都在同一个模块,我们称之为MyCode.py

0 个答案:

没有答案