我们有一个带有共享库的项目python(让我们称之为shared
)和许多" small"使用它的应用程序(微服务)(让我们称之为app1
app2
)。
这些应用程序也有许多脚本和一些python代码。
代码组织是这样的:
/src
app1/
start.sh
app1.py
app2/
start.sh
app2.py
shared/
organisation/
__init__.py
utils.py
我们想做一些测试(显然)
所以我们尝试过这样的事情:
/src
app1/
start.sh
app1.py
tests.py
app2/
start.sh
app2.py
tests.py
shared/
organisation/
__init__.py
utils.py
tests/
test_utils.py
我们的问题是: *启动所有测试都很痛苦;我们进入每个目录并启动测试(手动!)。 *我们的构建过程占用了每个应用程序文件夹并将其发送到生产环境(它很丑陋!) 所以我们想让它变得更好!
我们来了这个
/src
app1/
start.sh
app1/
app1.py
tests/
tests.py
app2/
start.sh
app2/
app2.py
tests/
tests.py
shared/
organisation/
__init__.py
utils.py
tests/
test_utils.py
现在CI只复制好文件夹而不是tests文件夹,但pytest不喜欢我们的组织(名称中有一些冲突)。
所以我们想出了这个:
/src
app1/
start.sh
app1/
app1.py
app2/
start.sh
app2/
app2.py
shared/
organisation/
__init__.py
utils.py
/tests/
app1/
tests.py
app2/
tests.py
organisation/
test_utils.py
但是pytest
也不喜欢它......
我的问题是: *他们是组织这类项目的好方法(许多app和共享库?)
注意:
*我们只想保留一个git而不打扰子模块/子树等。
*我们不想使用pypi和Pipenv来管理我们的内部依赖项
*我们希望为所有代码提供一个代码覆盖(而不是每个应用程序/ lib一个代码覆盖),因此我们希望一次启动pytest
。
由于
我们的解决方案: 我们也回来了:
/src
app1/
start.sh
app1/
app1.py
tests/
tests.py
app2/
start.sh
app2/
app2.py
tests/
tests.py
shared/
organisation/
__init__.py
utils.py
tests/
test_utils.py
启动测试:
py.test src/app1 src/app2 src/shared
它的接缝效果很好。
答案 0 :(得分:1)
您可以执行以下操作:
python -m unittest discover -v /my/base/dir "*_test.py"
现在,这将搜索所有带有_test.py
后缀的文件并运行测试,即使您在嵌套目录中进行了测试。