unittest如何导入模块?

时间:2017-12-23 10:59:29

标签: python scripting directory python-unittest

我的目录结构:

r/
 |___init__.py
 |
 |_d1/
 |   |___init__.py
 |   |_s1.py
 |
 |_d2/
     |___init__.py
     |_test_s1.py

s1.py的内容:

def a():
    return 1

test_s1.py的内容:

from d1.s1 import a
from unittest import TestCase

class TestA(TestCase):
    def test_value(self):
        self.assertEqual(a(), 1)

print(a() * 10)

我导航到目录/r并执行python3 d2/test_s1.py。我收到错误ImportError: No module named 'd1'。如何执行脚本test_s1.py? 在我执行python3 -m unittest discover的同时,单位测试运行得很好,打印出10(即a()* 10)。

1 个答案:

答案 0 :(得分:0)

如果要在模块 test_s1 中显式运行测试,则可以指定模块或脚本的完整路径。

max(max(dp)) == max([1, 2, 1, 1])

python3 -m unittest d2.test_s1

正如您提到的,python3 -m unittest d2/test_s1.py 将自动检测并运行目录结构中的所有测试模块。

请注意,如果“test_s1.py”在末尾有 python3 -m unittest discover 则不会调用以下代码块,因为在这种情况下正在调用 unittest 的 main 和 name 的值将是“d2.test_s1”。