0
我正在執行maven構建的機器人測試用例。現在這些測試用例需要很多外部python模塊。 當我直接執行它們(pybot
)時,一切正常。Maven構建多個python模塊導入錯誤
但是,當我通過maven執行它們時,外部python模塊失敗。
[ ERROR ] Error in file '/home/xyz/robot/tf2jan/Tests/CLI/mycli/mycli_resources.txt': Importing test library '/home/xyz/robot/tf2jan/lib/rest/JsonValidator.py' failed: ImportError: No module named jsonselect
Traceback (most recent call last):
File "/home/xyz/robot/tf2jan/lib/rest/JsonValidator.py", line 6, in <module>
from jsonselect import jsonselect
PYTHONPATH:
/usr/lib/python2.7/dist-packages
/home/xyz/Downloads/python-jsonpath-rw
/home/xyz/Downloads/ply-3.10
/home/xyz/.m2/repository/org/robotframework/robotframework/3.0.2/Lib
/home/xyz/.m2/repository/org/robotframework/robotframework/3.0.2/robotframework-3.0.2.jar/Lib
我確實有將它們添加在Maven使用extraPathDirectories
這樣的插件配置的選項:
<plugin>
<groupId>org.robotframework</groupId>
<artifactId>robotframework-maven-plugin</artifactId>
<version>1.4.7</version>
<executions>
<execution>
<goals>
<goal>acceptance-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<skip>${skipRobotTests}</skip>
<testCasesDirectory>/home/xyz/robot/tf2jan/Tests/CLI/mycli</testCasesDirectory>
<variableFiles>/home/xyz/robot/tf2jan/etc/environments/mycli_env.py</variableFiles>
<outputDirectory>${project.basedir}/target/robotframework-reports/</outputDirectory>
<tests>mycli_help_usage</tests>
<extraPathDirectories>
<extraPathDirectory>/usr/lib/python2.7/dist-packages</extraPathDirectory>
<extraPathDirectory>/home/xyz/Downloads/python-jsonpath-rw</extraPathDirectory>
<extraPathDirectory>/home/xyz/Downloads/ply-3.10</extraPathDirectory>
</extraPathDirectories>
<externalRunner>
<excludeDependencies>false</excludeDependencies>
<jvmArgs>
<jvmArg>${surefireArgLine}</jvmArg>
</jvmArgs>
</externalRunner>
</configuration>
</execution>
</executions>
</plugin>
但是這個解決方案,我將最終路徑,增加過多的模塊,這些模塊會使pom文件複雜化。 是否有任何配置可以自動解決這些模塊依賴關係或任何其他較短的解決方案?
是的,但是對於一個有知道什麼是所需的外部組件。想想在測試套件中添加了新的模塊依賴項時,開發人員可以將其添加到本地PYTHONPATH中,但CI系統不會知道該添加項,並且會失敗構建。 – ASR
但是,如果您向PYTHONPATH中添加諸如「somePath/external-lib-directories」之類的內容,然後將每個外部庫放入此文件夾內,它會不會起作用?還是僅僅是在你的環境中你不能做的事情? – Adonis
這會起作用,而且我當然可以在我的本地環境中執行此操作,但構建和測試套件觸發的CI框是不同的框,並且不受開發團隊的關注。每次添加新的依賴關係時,我們都不應該要求他們添加新模塊。 – ASR