如何在不获取测试记录的情况下执行excel表的测试记录(一行)在selenium(testng)中失败

问题描述 投票:0回答:2

我有一个应用程序,我想登录。登录将成功(提供正确的用户ID和密码),只有成功登录后页面才会重定向到主页。但是在登录失败时,页面不会重定向到另一个页面,它只会说“请输入正确的详细信息”

我有一个excel表,其中包含正确的用户ID和密码,以及错误的用户ID和密码。

考虑以下顺序:

  1. 正确的用户ID和密码
  2. 正确的用户ID和密码
  3. 用户ID和密码不正确
  4. 正确的用户ID和密码
  5. .....更正用户ID和密码。 。 。 50 ...更正用户ID和密码

现在,如果我使用excel表执行我的程序,程序可以正常运行测试记录1 2,但是由于测试记录3不正确,所以程序停止执行,所有其余的3到50个测试记录都没有得到评估。

我想要的是一些机制,如果用户ID和密码不正确,测试记录将通过(表示TRUE NEGATIVE)。断言可以吗?

excel selenium automated-tests testng
2个回答
0
投票

你使用TestNG库,其中xml文件包含套件,它执行测试用例顺序,如你在文件中提到的那样,它将执行“FirstTestCase”然后“SecondTestCase”同样..所以你可以做一件事维护一个一个文件调用testng.xml,其中包含这样的套件..

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="testng" preserve-order="true">

    <test name="FisrtTestCase_001">
        <parameter name="test-id" value="firsttestcase_001"/>
        <parameter name="test-config" value="LotEntryConfig"/>
        <parameter name="test-config-sheet" value="LotAdd"/>
        <classes>
            <class name="testDrivers.TestDriver"/>
        </classes>
    </test>
    <test name="SecondTestCase_002">
        <parameter name="test-id" value="secondtestcase_002"/>
        <parameter name="test-config" value="FarmerRegConfig"/>
        <parameter name="test-config-sheet" value="NewReg"/>
        <classes>
            <class name="testDrivers.TestDriver"/>
        </classes>
    </test>

 </suite> <!-- testng-->

同样明智的你可以插入更多的套件,所以优点是,如果任何测试用例失败,那么执行将不会停止,但你需要开发那个逻辑,就像在我的情况下我得到三个参数test-id, config-file, sheet-name

以便测试用例以这样的方式执行:无论配置文件是否存在,如果存在,则表单是否存在,如果存在,那么test-id是否存在于列中,如果存在则从该行获取所有值并将其存储到数组中,以便您随时随地...

我已与您分享链接以供参考..

https://www.guru99.com/all-about-testng-and-selenium.html

https://www.toolsqa.com/testng-tutorial/

希望你能理解..


0
投票

您必须将代码放在try-catch块中以避免程序终止。我假设您的代码中可能有以下代码结构:

@Test
public void validateCredentials(String username, String password)
{
 //do login and check for credentials
 for (int i=0; i<array.lenth; i++)
 {
   try{
   if(successful go ahead){}
   else
     throw new Exception("Not valid credentials")
   } catch(Exception e){ e.printstacktrace();}
 }
}

在这种情况下,让我们说在数字3,你有无效的凭据,它将抛出异常,并在catch块它将被处理,它将不会停止你的代码,以防万一发生故障。

© www.soinside.com 2019 - 2024. All rights reserved.