我一直在谷歌搜索这个问题超过一个小时,并且绝对不知道该做什么 - 我正在尝试在我的公共回购中设置travis ci,并且出于某种原因,每次我提交和构建时,我一直得到这样:
============================= test session starts ==============================
platform linux2 -- Python 2.7.13, pytest-3.2.1, py-1.4.34, pluggy-0.4.0
rootdir: /home/travis/build/epitone/digitron, inifile:
plugins: cov-2.5.1
collected 0 items
========================= no tests ran in 0.01 seconds =========================
The command "pytest" exited with 5.
Done. Your build exited with 1.
出于某种原因,我的测试没有被收集,即使在我的本地机器上,pytest运行得很好,甚至通过了我设置的(单个)测试。有谁知道这里到底发生了什么?
我的目录设置如下:
digitron/
├── bot.py
├── lib
│ ├── _config.py
│ ├── config.py
│ ├── __init__.py
│ └── utils.py
├── README.md
├── requirements.txt
└── tests
└── auth_test.py
我的.travis.yml文件:
language: python
python:
- "2.7"
- "3.2"
- "3.3"
- "3.4"
- "3.5"
- "3.6"
- "nightly" # currently points to 3.7-dev
before_install:
- pip install pytest pytest-cov
# command to install dependencies
install: "pip install -r requirements.txt"
# command to run tests
script: pytest
我的requirements.txt文件包含:
pytest>=3.2.1
py>=1.4.31
pluggy>=0.4.0
我的auth_test.py文件只是:
"""
Testing for Digitron
"""
# Necessary to find parent directory
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import bot
import pytest
def test_connect():
"""Test connect() method in bot.py
Returns True or false
"""
assert(bot.connect("irc.chat.twitch.tv", 6667, "oauth:key", "username", "#channel")) == True
我基本上把我的头发拉到这里试图找出我做错了什么 - 谷歌搜索错误代码5什么都没有给我,我甚至跟着别人设置并且仍然无处可去 - 是否有我缺少的东西?
编辑尝试在pytest命令中显式调用tests /目录 - 在本地工作,在travis.ci上再次失败
答案 0 :(得分:2)
虽然我无法判断这是否是您问题的原因,但至少强制sys.path
的方法并不是非常正统。 pytest会自动执行此操作:https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code因此可能存在导入问题。
错误编号5是由pytest未找到任何测试引起的,请参阅documentation
可能的解决方案测试:
test_auth.py
pwd
,ls
等。尝试执行以下文件:python tests/auth_test.py
。在评论中格式化这有点长而烦人,因此答案。
答案 1 :(得分:0)
您应该添加一个pytest.ini文件,其内容如下:
[pytest]
testpaths = <path to your tests here>
否则,Travis无法找到您的测试,因此为什么会出现错误编号5。