gpt4 book ai didi

python - 对已安装的包运行 unittest

转载 作者:行者123 更新时间:2023-12-04 07:56:58 28 4
gpt4 key购买 nike

我目前正在做一个项目,其结构是:

my_package
│ README.md
| setup.py

└───my_package
| | __init__.py
│ │ file1.py
│ │ file2.py
| | ...
│ └───subpackage
│ │ sub1.py
│ │ ...

└───test
| __init__.py
│ test_file1.py
| test_file2.py
我可以使用 python -m unittest discover -s test 运行我的所有测试.大部分 test_x.py文件包含导入,例如 from my_package.file1 import Something .因此, unittest命令将针对 my_package 中包含的源代码运行我的所有测试.
另一方面,我从这个包创建了一个私有(private)的 Pypi 包。在我的 CI 中,我想针对 运行我的单元测试。已安装 文件,而不是本地源代码。 import my_package.file1; print(my_package.file1.__file__)然后应该显示到 site-packages 的路径.
有没有办法这样做?
编辑:我想将我的测试文件夹与 my_package 分开。文件夹,因为我不打算分发我的测试。

最佳答案

要针对已安装的包运行发现测试,请执行以下操作:
在你的包目录中./test/添加文件run.py内容如下:
Try it online!

import os, unittest

def load_tests(loader, standard_tests, pattern):
this_dir = os.path.dirname(__file__)
pattern = pattern or "test_*.py"
top_level_dir = os.path.dirname(os.path.dirname(this_dir))
package_tests = loader.discover(
start_dir = this_dir, pattern = pattern, top_level_dir = top_level_dir,
)
standard_tests.addTests(package_tests)
return standard_tests

if __name__ == '__main__':
unittest.main()
然后运行测试就像 python -m your_package.test.run 一样简单。 .
如果您愿意,可以放置 run.py进入您的根目录,然后只需替换 this_dir = os.path.dirname(__file__)this_dir = os.path.dirname(__file__) + '/test/' .然后通过 python -m your_package.run 运行测试.

关于python - 对已安装的包运行 unittest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66651858/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com