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