为了让Travis CI找到并运行测试,一个Python项目应该长什么样子?

6

我目前有一个涉及以下.travis.yml文件的项目:

language: python
install: "pip install tox"
script: "tox"

在本地,tox 可以正常执行并运行35个测试,但在Travis CI上,它没有运行任何测试

更多详情请参见:https://travis-ci.org/neverendingqs/pyiterable/builds/78954867

我还尝试了其他方法,包括:

language: python
python:
  - "2.6"
  - "2.7"
  - "3.2"
  - "3.3"
  - "3.4"
  - "3.5.0b3"
  - "3.5-dev"
  - "nightly"
# also fails with just `nosetest` and no `install` step
install: "pip install coverage unittest2"
script: "nosetests --with-coverage --cover-package=pyiterable"

他们也找不到任何测试

我的项目结构像这样:Like This:

- ...
- <module>
- tests (for the module)
- ...

项目/文件夹的结构是否不正确?


你尝试过在nosetest命令中指定测试位置吗?我只在一个项目中使用Travis CI,使用nosetest tests/来运行测试。尝试调整你的tox.ini文件为nosetests tests/ --with-coverage --cover-package=pyiterable - bnlucas
刚试了一下,没有成功 =[ - neverendingqs
@bnlucas,我能看一下你的代码库结构吗? - neverendingqs
是的,对不起。应该加上它。https://github.com/bnlucas/python-basehash - bnlucas
1个回答

2

文件夹结构没有问题。

看起来Travis CI上的文件被视为可执行文件(来自https://travis-ci.org/neverendingqs/pyiterable/builds/79049179的日志):

nosetests --verbosity=3
nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$']
nose.selector: INFO: /home/travis/build/neverendingqs/pyiterable/LICENSE.txt is executable; skipped
nose.selector: INFO: /home/travis/build/neverendingqs/pyiterable/pyiterable/iterable.py is executable; skipped
nose.selector: INFO: /home/travis/build/neverendingqs/pyiterable/readme.md is executable; skipped
nose.selector: INFO: /home/travis/build/neverendingqs/pyiterable/setup.cfg is executable; skipped
nose.selector: INFO: /home/travis/build/neverendingqs/pyiterable/tox.ini is executable; skipped
nose.selector: INFO: /home/travis/build/neverendingqs/pyiterable/tests/test_iterable.py is executable; skipped

我修改了tox.ini,使得运行nosetests时带有--exe参数(nosetests --exe --with-coverage --cover-package=pyiterable),参考自使用Nose运行目录中的所有测试。在解决了一些无关错误后,我成功让测试在https://travis-ci.org/neverendingqs/pyiterable/builds/79049983上运行!


澄清一下 - TravisCI并不是认为它们是可执行文件 - 根据当前的GitHub存储库(导航到任何文件,例如iterable.py 并查看顶部是否说“executable”),它们确实是可执行的。有时可执行文件是正确的选择,但我认为如果没有shebang(#!/usr/bin/env python或类似的),它不会执行-所以我猜你要么想要两者(shebang和可执行权限),要么都不需要。 - dwanderson
尽管我有评论,但当您需要可执行的Python文件时,“--exe”标记是正确的选择 - 很好的发现! - dwanderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接