'python -m unittest discover' 在本地工作但无法发现 CircleCi 上的测试
'python -m unittest discover' works locally but unable to discover tests on CircleCi
我正在尝试将单元测试添加到我在 CircleCi 上的项目中。在本地,当我从终端 运行 'python -m unittest discover' 时,它能够找到并 运行 所有 16 个测试。但是在 CircleCi 上,它说:
Ran 0 tests in 0.000s
知道会发生什么吗??
是否缺少某些配置或环境变量??
我的项目结构:
project
├── src
│ ├── main
│ ├── python
│ ├── testing
│ ├──Test1.py
| ├──Test2.py
config.yml
version: 2
docker:
- image: circleci/python:3.7.5
jobs:
build:
steps:
- checkout
- restore_cache:
key: deps1-{{ .Branch }}-{{ checksum "requirements.txt" }}
- run:
name: Install Python deps in a venv
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements/dev.txt
- save_cache:
key: deps1-{{ .Branch }}-{{ checksum "requirements.txt" }}
paths:
- "venv"
- run:
name: Running tests
command: |
cd ~/project/src/main/python/testing/
python3 -m unittest discover
尝试为该特定步骤设置 working_directory
,而不是使用 cd
,例如
- run:
name: Running tests
working_directory: ~/project/src/main/python/testing/
command: |
python3 -m unittest discover
我终于解决了这个问题。
我的测试 类 以大写字母 'T' 开头,单元测试默认查找 test*.py
。所以我不得不添加额外的配置,如下所示:
python -m unittest discover -p "Test*.py"
它能够在本地发现测试,因为 Windows 命令行不区分大小写。
但是 CircleCi 启动的 Linux 命令行区分大小写,这就是为什么测试没有被发现的原因。
我正在尝试将单元测试添加到我在 CircleCi 上的项目中。在本地,当我从终端 运行 'python -m unittest discover' 时,它能够找到并 运行 所有 16 个测试。但是在 CircleCi 上,它说:
Ran 0 tests in 0.000s
知道会发生什么吗?? 是否缺少某些配置或环境变量??
我的项目结构:
project
├── src
│ ├── main
│ ├── python
│ ├── testing
│ ├──Test1.py
| ├──Test2.py
config.yml
version: 2
docker:
- image: circleci/python:3.7.5
jobs:
build:
steps:
- checkout
- restore_cache:
key: deps1-{{ .Branch }}-{{ checksum "requirements.txt" }}
- run:
name: Install Python deps in a venv
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements/dev.txt
- save_cache:
key: deps1-{{ .Branch }}-{{ checksum "requirements.txt" }}
paths:
- "venv"
- run:
name: Running tests
command: |
cd ~/project/src/main/python/testing/
python3 -m unittest discover
尝试为该特定步骤设置 working_directory
,而不是使用 cd
,例如
- run:
name: Running tests
working_directory: ~/project/src/main/python/testing/
command: |
python3 -m unittest discover
我终于解决了这个问题。
我的测试 类 以大写字母 'T' 开头,单元测试默认查找 test*.py
。所以我不得不添加额外的配置,如下所示:
python -m unittest discover -p "Test*.py"
它能够在本地发现测试,因为 Windows 命令行不区分大小写。 但是 CircleCi 启动的 Linux 命令行区分大小写,这就是为什么测试没有被发现的原因。