1

testng.xml スイートで複数のクラスを実行する場合、単一のクラスまたはテストが失敗した場合、その特定のテストのみをスキップして、Firefox および Chrome の次のテスト スイートに進みます。ただし、Microsoft Edge の場合、Fail Test スイートを処理できません。そして残りすべての Fail/Skip スクリプトを作成します。

.XMl スイートの参照:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite"  parallel="tests" verbose="1">
    <test name="Login-Registration Test" preserve-order="true">
        <classes>
            <class name="myAccount.login" />
            <class name="myAccount.registration" />
        </classes>
    </test> 
    <!-- Test -->
</suite> <!-- Suite -->

ここでは、ログイン テスト スイートを実行し、その後スイートとして登録する 2 つのクラスの例を示します。ただし、ログインに失敗すると、Registration Suite for Edge は実行されません。これはFirefoxとChromeで機能しています。

私はブラウザを呼び出していますWebDriver

        // driver = new ChromeDriver();
        // driver = new FirefoxDriver();
        driver = new EdgeDriver();

ITestResult を使用して、各 @Test の後に @AfterMethod アノテーションを呼び出す

 @AfterMethod
    public void calltestStatus(ITestResult result) throws IOException
    {
        testStatus(result);
        count++;
        driver.manage().deleteAllCookies();
    }

そして、これが ITestResult の定義です。

public void testStatus(ITestResult result) throws IOException
    {
        if (result.getStatus() == ITestResult.FAILURE) {

            testResult = "Test Fail :" + result.getName();

            testResult = "Details of Fail Testcase:" + result.getThrowable();
            extentReport.flush();

        } else if (result.getStatus() == ITestResult.SUCCESS) {

            testResult = "Test Pass :" + result.getName();

        } else if (result.getStatus() == ITestResult.SKIP) {

            testResult = "Test Skip :" + result.getName();

        } else {

            testResult = "Test Undefined :" + result.getName() + "<br>Status : " + result.getStatus();

            testResult = "Details of undefined Testcase:" + result.getThrowable();
        }
    }

Edge では TestNG または Selenium の動作が異なりますか?

4

1 に答える 1