我有一个 Excel 文件,我在其中存储测试用例名称/ID。
现在,如果我的测试用例名称(在 excel 中)以 'test' 开头,我想执行我的 Junit / TestNG test 之一。如果我的测试用例名称(在 excel 中)以“check”开头,我想执行另一个 Junit / TestNG 测试。同样,我想根据 excel 中的 ID 执行不同的测试。
我怎么能做到这一点?有人可以发布一个对我有很大帮助的例子。
谢谢,迈克
我认为您想要做的是根据您的 excel 表动态构建测试。这就是您可以通过编程方式运行 testng 的方式。
您需要做的是从您的 excel 中读取数据,创建 XmlClass 并根据您的方法的测试名称设置 xmlclass 的方法。将 xmlclass 添加到 XmlSuite。所以基本上你是在运行时根据你的 excel 中的测试用例名称生成一个动态套件。
您正在寻找的是一种称为反射的东西。在您的 xml 中,您将拥有要运行的类和方法名称。在java中,您将使用反射来获取类,并迭代方法以确定是否有任何匹配您想要的。反射通常不是一种有效的做事方式,但出于测试的目的,它可以做你想做的事。
一个例子是
for(Method method : this.getClass().getMethods()){
{
if(method.getName().equals(name)){
method.invoke();
}
}
请阅读http://docs.oracle.com/javase/tutorial/reflect/class/index.html了解详情。
我使用 testNG 做了类似的事情。我的要求是运行用户将从测试用例列表中选择的测试用例。我使用 Jenkins 而不是 excel 表让用户从列表中选择测试用例。逻辑也可能对你有用。就这个:
我没有弄清楚要运行哪种方法,而是为所有测试用例指定了一个唯一的测试组名称。该组名应与您在 Excel 工作表中的组名相同。唯一需要的逻辑是创建 testng.xml 以使用输入组名称运行测试。这可以使用 testNG 对象或使用 dom4j 或类似的东西创建 tesNG.xml 来完成。