我有一个使用selenium和testng开发的maven测试自动化项目。这就是我对我的框架所做的事情:
1.我在src / main / java中有主类,在主类中我触发了动态创建和运行testng xml的方法。
2.要运行的测试是从XMLFlag.xls表中确定的,测试的测试数据是在src / main / resources中的TestNG.xlsx表中设置的。
3.我已成功创建了整个包装的罐子。
由于我已将测试数据表(TestNG.xlsx和XMLFlag.xls)放在src / main / resources下,因此这些测试数据表将打包在jar中。
但理想情况下,我想为不同的测试数据集运行测试脚本,看看脚本是否成功。 例如:我想首先使用用户名:abcd和密码:1234运行我的脚本,然后使用用户名运行相同的脚本集:efgh和密码:9876。
但由于我的测试数据表已打包在jar中,因此无法实现上述情况,因为我无法编辑测试数据表。
所以让我说要克服上述问题: 1.我将我的测试数据表放在src / test / resources而不是src / main / resources中,然后创建一个jar。 但是当我这样做并尝试运行jar时,
我收到错误消息:
.\src\test\resources\XMLFlag.xls (The system cannot find the path specified)
我相信这是因为测试数据表放在目标文件夹下的test-classes文件夹中,而不是放在jar中。
用简单的话说: 一世。我希望测试数据表在我的jar之外,以便可以编辑它并根据用户需求运行测试脚本。 ii。如果测试数据表在我的jar之外,我的框架中的其他所有内容都依赖于测试数据信息(即测试脚本,testng.xml)并且打包在jar中,我的jar就不会运行。
有没有办法避免这个错误并完成我想做的事情? 或者我应该重构我的整个框架吗?
请帮助我。
答案 0 :(得分:1)
当您执行jar时,如何将测试数据表作为程序参数传递?
即,
java -jar c:/path/to/your/jar c:/path/to/your/testng.xlsx c:/path/to/your/xmlflag.xlsx
然后只需在主要方法中,阅读文件名及其内容,例如
File testNgXlsxFile = new File(args[0]);
并将文件中的信息传递给您的框架。
这可能吗?