ant:使用包含文件集中文件的所有目录创建dirset

时间:2013-01-25 15:44:04

标签: unit-testing ant python-2.7 dirset

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>

或者我犯了错误,是否有更好的方法来实现这一目标?

1 个答案:

答案 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开始递归工作。