Python:单元测试模块和相关导入

标签 python unit-testing python-packaging

当前有以下文件层次结构:

\package
    __init__.py
    run_everything.py

    \subpackage
        __init__.py
        work.py
        work1.py
        work2.py

    \test
        __init__.py
        test_work.py
        test_work1.py

我的第一个问题是关于相对进口。假设在\subpackage\work.py 中我有一个名为 custom_function() 的函数,我想在 test_work.py 中测试该函数。出于某种原因,我不知道如何从一个模块导入到另一个模块。尝试 from .. subpackage.work1 import custom_function() 似乎不起作用,并产生错误 Attempted relative import in non-package 有什么办法可以解决这个问题吗?

2) 我想用一个函数运行 run_everything.py 中的所有测试文件,在每个 test_work*.py 文件中添加一个 suite() 函数,它将每个 unit_testing 类添加到 suite.addTest(unittest.makeSuite(TestClass)),并且最后将它们导入到顶层 run_everything.py 是 Python2.7 中最常规的方式吗?

最佳答案

这是一个技巧*
使用以下命令将“子包”和“测试”的路径插入到 run_everything 中的 python 路径:

    import sys
    sys.path.insert(0, '/path/to/package/subpackage')
    sys.path.insert(0, '/path/to/package/test')

然后,您可以在 run_everything 中使用原始导入来导入所有文件:

    import work, work1, work2
    import test_work, test_work1

*这不会永久影响您的 PYTHONPATH。

关于Python:单元测试模块和相关导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11919620/

相关文章:

Python 在本地包中导入本地包时出现问题

python - 在 Python 中将多多边形转换为多边形

unit-testing - 使用 jmeter 读取 csv(从 x 开始)

c# - 为什么 Assert.AreEqual() 在比较之前转换为对象?

unit-testing - 使用 NUnit 测试项目列表

python - pipenv:如何解决依赖冲突

python - 如何从 python 脚本中获取资源文件的完整路径?

python - 使用相同参数时,GridSearchCV 的性能比普通 SVM 差

Python 无法导入名称 timegm

Python Pandas - 与 Scipy 的优势比(P 值 = 0?)