Context:一个递归包含python unittest.TestCase
s:
projectdir/build.xml
projectdir/src/x.java
projectdir/distribute/p.jar
projectdir/tests/a/test1.py
projectdir/tests/a/test2.py
projectdir/tests/b/test1.py
projectdir/tests/c/test1.py
projectdir/tests/javaunittests/test2.java
我希望蚂蚁打电话
python -m unittest discover -s a b c
现在我试图将fileset
转换为包含目录的dirset
?我们的想法是运行python单元测试:
<apply command="python">
<arg line="-m unittest"/>
<arg value="-s"/>
<dirset include="${python_unittests}"/>
</apply>
其中${python_unittests}" would refer to a
fileset`(但我没有找到)如下:
<fileset id="python_unittests" include="**/*.py">
<containsregexp expression="\(unittest.TestCase\)"/>
</fileset>
或者我犯了错误,是否有更好的方法来实现这一目标?
答案 0 :(得分:1)
你想要所有带测试用例的python文件,你不需要dirset,使用:
<apply executable="python">
<arg line="-m unittest"/>
<arg value="-s"/>
<fileset dir="projectdir" includes="**/*.py">
<contains text="unittest.TestCase"/>
</fileset>
</apply>
修改强>
在评论后检查了docs for unittest on python.org
据我了解,这应该足够了:
<property name="projectroot" location="foo/bar/yourprojectdir"/>
<exec executable="python" failonerror="true">
<arg line="-m unittest discover ${projectroot} 'test*.py'"/>
</exec>
作为python docs第26.3.3节。测试发现解释:
The -s, -p, and -t options can be passed in as positional arguments in that order. The following two command lines are equivalent:
python -m unittest discover -s project_directory -p '*_test.py'<br>
python -m unittest discover project_directory '*_test.py'
我希望发现从project_directory开始递归工作。