为许多应用程序组织测试

时间:2018-03-29 10:03:45

标签: python

我们有一个带有共享库的项目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

它的接缝效果很好。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

python -m unittest discover -v /my/base/dir "*_test.py"

现在,这将搜索所有带有_test.py后缀的文件并运行测试,即使您在嵌套目录中进行了测试。