travis ci在使用pytest时没有收集我的测试

时间:2017-09-02 21:23:08

标签: python travis-ci

我一直在谷歌搜索这个问题超过一个小时,并且绝对不知道该做什么 - 我正在尝试在我的公共回购中设置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上再次失败

2 个答案:

答案 0 :(得分:2)

  1. 虽然我无法判断这是否是您问题的原因,但至少强制sys.path的方法并不是非常正统。 pytest会自动执行此操作:https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code因此可能存在导入问题。

  2. 错误编号5是由pytest未找到任何测试引起的,请参阅documentation

  3. 可能的解决方案测试:

    1. 将测试文件重命名为test_auth.py
    2. 向您的脚本添加诊断信息:pwdls等。尝试执行以下文件:python tests/auth_test.py
  4. 在评论中格式化这有点长而烦人,因此答案。

答案 1 :(得分:0)

您应该添加一个pytest.ini文件,其内容如下:

[pytest]
testpaths = <path to your tests here>

否则,Travis无法找到您的测试,因此为什么会出现错误编号5。