我有一个Excel文件,我存储测试用例名称/ ID。
现在,如果我的测试用例名称(在excel中)以'test'开头,我想执行我的一个Junit / TestNG测试。如果我的测试用例名称(在excel中)以'check'开头,我想执行另一个Junit / TestNG测试。同样,我想在excel中基于Ids执行不同的测试。
我怎么能这样做? 有人可以发一个对我有帮助的例子。
谢谢, 麦克
答案 0 :(得分:4)
我认为您要做的是根据您的Excel工作表动态构建测试。 这就是你运行testng programmatically的方法。
您需要做的是从您的Excel中读取,创建XmlClass并根据您的方法的测试名设置xmlclass的方法。将xmlclass添加到XmlSuite。 所以基本上你是在运行时基于excel中的测试用例名称生成一个动态套件。
答案 1 :(得分:1)
你正在寻找的东西叫做反思。在您的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了解详情。
答案 2 :(得分:1)
我使用testNG做了类似的事情。我的要求是运行测试用例,用户将从测试用例列表中进行选择。我使用Jenkins而不是excel表让用户从列表中选择测试用例。逻辑也可能对你有用。这是它:
我没有确定要运行哪种方法,而是为所有测试用例提供了一个唯一的测试组名称。此组名称应与Excel工作表中的名称相同。唯一需要的逻辑是创建testng.xml以使用输入组名运行测试。这可以使用testNG对象或使用dom4j或类似的东西创建tesNG.xml来完成。