我发现有两种方法可以在testng xml配置文件中读取参数:
使用@Parameter
注释并在注释后定义参数名称
使用ITestContext
作为测试类,DataProvider或Factory的参数,并使用getCurrentXmlTest()
和getParameter()
来读取参数。
出于任何原因,这些方式中的任何一种都是首选吗?还有其他办法吗?
答案 0 :(得分:3)
我认为区别在于范围。如果我需要在我的所有测试套件中使用相同的参数,例如。 env变量,我会在实现ITestListener或ISuiteListener的侦听器中使用它(对于套件范围),然后使用ITestContext / Suitecontext在<test>
或<suite>
下的所有测试中应用该值
但是,如果我需要针对特定测试用例的非常具体的参数,那么我会在这些特定的测试用例上使用@Parameter注释。
此外,@Parameter只能采用简单的值,因此可能存在一些用例,其中测试需要基于某些参数值的不同对象(而不是字符串)。在这种情况下,我更喜欢数据提供者,读取参数值(您的第二个选项,虽然我认为测试类的参数不正确),创建对象然后将其提供给测试。 (例如,属性文件的名称可能是一个参数值,它是根据属性文件中的数据读取和创建的对象,并作为不同的测试数据提供给测试)。