Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python&;maven(单元测试集成)_Python_Unit Testing_Maven - Fatal编程技术网

python&;maven(单元测试集成)

python&;maven(单元测试集成),python,unit-testing,maven,Python,Unit Testing,Maven,我有一个主要使用Java的项目(使用maven作为构建工具),我们希望添加一些python模块。将代码放在src/main/python中很容易,但是我还没有找到一种很好的方法将maven的测试框架集成到我们的python单元测试中。有没有一种很好的方法可以让我的java单元测试和python单元测试以相同的maven目标运行?(如果python单元测试的结果将显示在站点报告中,则会获得额外的分数)。这似乎就是您想要的。还有一些其他地方讨论了这一点 您也可以查看。尽管如此,Jython可能不支

我有一个主要使用Java的项目(使用maven作为构建工具),我们希望添加一些python模块。将代码放在src/main/python中很容易,但是我还没有找到一种很好的方法将maven的测试框架集成到我们的python单元测试中。有没有一种很好的方法可以让我的java单元测试和python单元测试以相同的maven目标运行?(如果python单元测试的结果将显示在站点报告中,则会获得额外的分数)。

这似乎就是您想要的。还有一些其他地方讨论了这一点


您也可以查看。尽管如此,Jython可能不支持您在Python代码中使用的东西。

ShiningPanda的同事们似乎在这方面做了一些工作,他们的博客文章解释了他们是如何做到的(正如@S.Lott所指出的),下面是一个工作示例:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
                <execution>
                    <id>python-test</id>
                    <phase>test</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>python3</executable>
                        <workingDirectory>${project.build.directory}</workingDirectory>
                        <arguments>
                            <argument>-m</argument>
                            <argument>unittest</argument>
                            <argument>discover</argument>
                            <argument>.</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

org.codehaus.mojo
execmaven插件
1.6.0
python测试
测试
执行官
蟒蛇3
${project.build.directory}
-m
单元测试
发现
.

在本例中,我们的测试是在${project.build.directory}上进行的,并且构建机器已经安装了
python3

我尝试过使用类似于上面的exec插件,但是我无法获得单元测试的“结果”来传播到maven中。例如,我们使用Hudson进行持续集成,如果python单元测试失败,我们至少需要在那里反映它。让maven查看exec进程的返回代码时,我是否错过了什么?@Mark:“result”?状态码?还是原木?如果您需要状态代码,这就是进程的存在状态。请参见
successCodes
。如果您想要日志,这就是stdout和stderr的用途。请参阅
outputFile
。很抱歉响应太晚:可能我绑定到了错误的生命周期方法,但是如果exec进程返回错误,它会停止生成还是只是静静地失败?例如,如果junit测试失败,它会记录错误,但会继续构建和测试,我会查看surefire报告以查看测试详细信息(Hudson会将构建标记为不稳定,因为测试失败,但构建成功)。一个执行者不会挂接到那个系统(至少就我现在的理解而言)。