【问题标题】:Running python unit test in Google Cloud Build在 Google Cloud Build 中运行 python 单元测试
【发布时间】:2019-07-28 01:21:44
【问题描述】:

我希望 Google Cloud Build 在推送更改后运行我在 python 项目中的单元测试。 我可以配置运行测试的步骤,但我不确定如何输入保存测试的目录,如果我只是输入.,那么它运行 0 测试

我的项目结构是: - 项目名 - 包裹名字 - 测试 - sample_test.py

这是我的cloudbuild.yaml 配置:

steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ["run","gcr.io/google-appengine/python","python3","-m","unittest","discover","--verbose","-s","./package_name/test/","-p","*_test.py"]
      id:   unittest

上述失败并显示此消息:

raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: './package_name/test/'
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: exit status 1
Show debug panel

如果我只用. 替换文件夹,那么它会运行但不会发现任何测试。 为了将代码复制到 gs 存储桶,我们使用 gsutil 然后 ./package_name 将包复制到存储桶 这当然在本地有效

我如何才能了解运行测试的正确文件夹结构是什么? 谢谢!

【问题讨论】:

    标签: python-3.x google-cloud-build


    【解决方案1】:
    1. 为什么要使用appengine 容器?为什么不直接使用官方 Python 容器 - name: python:3.7? 步骤作为 Docker 容器运行,当你想运行 docker 容器时,我认为没有理由在 docker 中运行 Docker。 试试这个:
    steps:
      - name: python:3.7
        args: ["python","-m","unittest","discover","--verbose","-s","./package_name/test/","-p","*_test.py"]
        id: unittest
    
    1. 另外,你在./package_name/test 目录中有__init__.py 文件吗? directory is not importable 消息通常表示此目录不是 Python 包,因为缺少 __init__.py 文件。

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 2020-05-07
      • 2013-09-01
      • 1970-01-01
      • 2021-10-31
      • 2013-12-21
      • 2015-12-13
      • 2014-04-08
      • 2021-09-25
      相关资源
      最近更新 更多