如何为执行相同测试方法的每个测试用例动态使用@Description(在诱惑报告中)
How to use @Description (in allure reporting) dynamically for each test case that executes same test method
我正在为我的 java-selenium 测试框架使用 Allure 报告。
我的数据提供者是以下形式的 HashMap
public static HashMap<String, String>[][] getDataTable(String fileName, String sheetName)
其中 fileName 是保存在该位置的 excel 工作簿名称 和 sheet 名字 是工作簿的作品sheet之一。
如果我在测试方法上方使用@Description,那么每个测试用例都会显示相同的描述。
我有不同的测试用例及其对相同测试方法的各自描述
(假设方法是 Login 和 TestCase1:没有密码登录,TestCase2:没有用户名登录)
所以对于这两个测试用例,我需要在诱惑报告中使用@Description 进行不同的描述。
我应该为它修改数据提供者吗?如果有怎么办?
为此我使用了这样的东西:
@Test(dataProvider = "getListOfCredentials", dataProviderClass = AuthenticationDataProvider.class)
public void loginUser(AuthenticationData authenticationData) {
AllureLifecycle lifecycle = Allure.getLifecycle();
lifecycle.updateTestCase(testResult -> testResult.setName("Test wrong login with username: "+authenticationData.getUsername()));
lifecycle.updateTestCase(testResult -> testResult.setDescription("Test wrong login with password: "+authenticationData.getPassword()));
}
因此,每次测试将 运行 使用 object authenticationData 时,我都会根据我的数据提供者方法将 return 的凭据动态获得 Allure 描述和测试标题。
对于 Allure 中的动态步骤,我已经实现了类似的东西。
因此,我的测试用例步骤显示在页面 class 中,并从我的测试方法中调用。
public class AuthenticationPage extends Page {
//// Locators
@Step("Login in app with wrong credentials")
public void loginInAppExpectFailure(AuthenticationData authenticationData) throws IOException, InterruptedException {
loginUserInApp(authenticationData);
AllureLifecycle lifecycle = Allure.getLifecycle();
lifecycle.updateStep(testStep -> testStep.setName("Step title login with username: "+authenticationData.getUsername()));
}
}
每次调用该步骤时,我都会更新该步骤的默认名称。 Lifecycle 使用来自 Allure 的 StepResult 对象(在我的例子中是 testStep 对象),您可以从中操作步骤属性。您有 setStatus、setAttachments 等方法。只需使用该方法即可。
我正在为我的 java-selenium 测试框架使用 Allure 报告。 我的数据提供者是以下形式的 HashMap
public static HashMap<String, String>[][] getDataTable(String fileName, String sheetName)
其中 fileName 是保存在该位置的 excel 工作簿名称 和 sheet 名字 是工作簿的作品sheet之一。
如果我在测试方法上方使用@Description,那么每个测试用例都会显示相同的描述。
我有不同的测试用例及其对相同测试方法的各自描述 (假设方法是 Login 和 TestCase1:没有密码登录,TestCase2:没有用户名登录)
所以对于这两个测试用例,我需要在诱惑报告中使用@Description 进行不同的描述。
我应该为它修改数据提供者吗?如果有怎么办?
为此我使用了这样的东西:
@Test(dataProvider = "getListOfCredentials", dataProviderClass = AuthenticationDataProvider.class)
public void loginUser(AuthenticationData authenticationData) {
AllureLifecycle lifecycle = Allure.getLifecycle();
lifecycle.updateTestCase(testResult -> testResult.setName("Test wrong login with username: "+authenticationData.getUsername()));
lifecycle.updateTestCase(testResult -> testResult.setDescription("Test wrong login with password: "+authenticationData.getPassword()));
}
因此,每次测试将 运行 使用 object authenticationData 时,我都会根据我的数据提供者方法将 return 的凭据动态获得 Allure 描述和测试标题。
对于 Allure 中的动态步骤,我已经实现了类似的东西。 因此,我的测试用例步骤显示在页面 class 中,并从我的测试方法中调用。
public class AuthenticationPage extends Page {
//// Locators
@Step("Login in app with wrong credentials")
public void loginInAppExpectFailure(AuthenticationData authenticationData) throws IOException, InterruptedException {
loginUserInApp(authenticationData);
AllureLifecycle lifecycle = Allure.getLifecycle();
lifecycle.updateStep(testStep -> testStep.setName("Step title login with username: "+authenticationData.getUsername()));
}
}
每次调用该步骤时,我都会更新该步骤的默认名称。 Lifecycle 使用来自 Allure 的 StepResult 对象(在我的例子中是 testStep 对象),您可以从中操作步骤属性。您有 setStatus、setAttachments 等方法。只需使用该方法即可。