我以前在我的setup.cfg
文件中有这个:
[nosetests]
where=test_python_toolbox
但现在我通过提供两个并行代码库来支持Python 2和Python 3,一个位于source_py2
文件夹中,另一个位于source_py3
文件夹中。 setup.py
知道如何检查Python版本并选择正确的版本。问题是,我不知道如何制作nosetests
,当在repo根目录中调用时,选择正确的文件夹。
我可以拥有这个:
[nosetests]
where=source_py2/test_python_toolbox
但是测试只适用于Python 2.我希望它们适用于两个版本。
我可以用旗帜发起nosetests
,但我不愿意。
答案 0 :(得分:6)
[nosetests]
where=source_py2/test_python_toolbox
py3where=source_py3/test_python_toolbox
答案 1 :(得分:4)
使用where
并指定多个测试,而不是使用已弃用的tests
:
[nosetests]
tests=source_py2/test_python_toolbox, source_py3/test_python_toolbox
这将运行两组测试。对于每个测试,在最顶层,在语言特定功能到位之前,添加运行测试的选择标准。例如,对于source_py3
测试添加:
import sys
from unittest import SkipTest
if sys.version_info < (3, 0):
raise SkipTest("must use python 3.0 or greater")
使用python2.6鼻子你会得到:
S
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK (SKIP=1)
为每个拥有它的测试模块。丑陋的方面是你必须在每个测试用例中注入这个代码。
答案 2 :(得分:1)
tox可以通过多个环境规范和changedir
选项(只是覆盖每个Python版本)来实现。