Nose2无法导入模块,但只能在docker中运行

时间:2018-06-08 14:22:22

标签: python unit-testing docker celery

我有一个以下结构的python Celery项目:

├── celeryconfig.py
├── Dockerfile
│   └── _templates
├── framework
│   ├── celery
│   │   ├── celery.py
│   │   ├── __init__.py
│   │       └── __init__.cpython-36.pyc
│   ├── tasks
│   │   ├── tasks.py
│   │   ├── __init__.py
│   ├── utilities
│   │   ├── utilities.py
│   │   ├── __init__.py
│   ├── tests
│   │   ├── __init__.py
│   │   └── test_celery.py

我使用命令celery framework.celery.celery worker

从顶级目录运行

我在使用nose2运行的tests目录中有tets。当我在目录中运行它时测试通过没有问题。但是,当测试作为docker构建过程的一部分运行时,nose2进程会失败,因为它无法理解导入,例如

# test_celery.py

from framework.tasks.tasks import my_function

def test_my_function():
    # Do some testing.

导入该函数成功,但导入文件的导入失败,如下所示:

# tasks.py

from framework.utilities.utilities import some_other_function

我遇到的部分问题是Celery特别关注它本身的结构,因此尝试重组目录只会导致芹菜无法启动。我不太清楚为什么测试只在docker构建中失败,看起来像这样:

FROM google/cloud-sdk:198.0.0-alpline
COPY . /project
WORKDIR /project
RUN apk add --no-cache python3 python3-dev && pip3 install -r requirements.txt
RUN nose2 

0 个答案:

没有答案