Могу ли я получить имя переменной и имя метода @Test в вызове после теста? - PullRequest
0 голосов
/ 28 июня 2018
@BeforeSuite
    public void reports() {
        clearreports();
    }

    @Test(priority = 0,enabled = true)
    public void C2410949_VerifyNameIsCorrectlyDisplayedOnHomePage() throws IOException, InterruptedException, ATUTestRecorderException, APIException {
        String TestCaseId = "8789740";
        ATUTestRecorder record = new ATUTestRecorder("./video",
                Thread.currentThread().getStackTrace()[1].getMethodName(), true);
        record.start();
        launchUrl();
        startResult();      
        startTestCase(Thread.currentThread().getStackTrace()[1].getMethodName().toString());
        UserNamePage usernamePage = new UserNamePage();
        usernamePage.EnterUsername(BaseClass.username.toUpperCase());
        PasswordPage passwordPage = new PasswordPage();
        passwordPage.passwordValidator(BaseClass.password);
        Thread.sleep(30000);
        HomePage homePage = new HomePage();
        String actualNickName = homePage.WelcomeMessage.getText().toString().replaceAll("hello,", "").trim();
        System.out.println("Actual Nick Name:"+actualNickName);
        homePage.Click(homePage.SettingsNHelp);
        Thread.sleep(15000);                
        SettingsAndHelp settingandhelp = new SettingsAndHelp();
        settingandhelp.Click(settingandhelp.ChangeContactInformation);
        Thread.sleep(5000);
        SettingsAndHelp.ChangeContactInformation changeContactInformation = settingandhelp.new ChangeContactInformation();
        String expecteduserNickName = changeContactInformation.UserNickName.getText().toString()+"!";       
        System.out.println(expecteduserNickName);
        AssertVerify(actualNickName, expecteduserNickName);
        homePage.Click(homePage.Logout);
        endTestcase();
        endResult();
        updateResults(TestCaseId, "PASSED");
        record.stop();
    }
@AfterTest
public void TearDown() {
    endTestcase();
    endResult();
    driver.close();
}

Выше приведен один из моих тестов. Здесь меня бьют по двум предметам.

One is Test Rail Integration:
1. I have `testcase Id` in `@ Test`. But if test case is passed, then it is all good. But In middle if it fails, I have to fail the test case. I can move that making fail part in @afterTest but test case Id will not be available from @Test.

Есть ли способ получить идентификатор тестового примера, который я использовал в @ Test

2. The recording is also not working if it fails in middle as it is record.stop at the end of the test case. I can initialize and start record in @BeforeTest and Stop in @AfterTest. 

Но, опять же, я считаю, что соглашение о присвоении имен видео для меня затруднено, поскольку я ищу текущее имя метода / идентификатор тестового примера в качестве имени видео ..

Может ли кто-нибудь помочь мне в этом?

Спасибо

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете использовать ITestContext интерфейс. Это позволяет хранить объекты, а затем извлекать их в любом месте. Он останется актуальным для одного целого теста.

Как использовать:

1) Сначала установите для вашего атрибута любое значение, которое вы хотите, в этом случае TestCaseId -

@Test(priority = 0,enabled = true)
 public void C2410949_VerifyNameIsCorrectlyDisplayedOnHomePage(ITestContext testContext) throws IOException, InterruptedException, ATUTestRecorderException, APIException {
 String TestCaseId = "8789740";
 testContext.setAttribute("TestCaseID", TestCaseId);
 // rest of the code

2) Затем получите его в нужной вам функции -

@AfterTest
public void TearDown(ITestContext testContext) {
    String testCaseId = testContext.getAttribute("TestCaseID");
    endTestcase();
    endResult();
    driver.close();
}

Обратите внимание, как я передал ITestContext testContext в качестве параметра в обеих функциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...