背景:
我创建了一个基本的游乐场项目,其中包含:
@Test(组= {"初始化"}) public void openURL()
包含用于启动webdriver并使用给定URL打开chrome>实例的webdriver代码。
@Test(dependsOnGroups = {"初始化"}) public void testLogin()
包含webdriver代码:
1.找到用户名密码文本输入元素,从属性文件中输入用户名密码 2.找到"登录"按钮并单击按钮登录
3.如果其他人已使用凭据登录,则管理强制登录方案。
@Test(dependsOnMethods = {" TESTLOGIN"}) public void testPatientsScheduleList()
包含webdriver代码以检查是否已安排任何患者。如果是,则获取名称并在控制台中显示。
@Test() public void testLogout()
包含用于查找注销按钮的webdriver代码,然后单击按钮以注销应用程序。
- 醇>
@AfterTest() public void closeConnection()
包含webdriver代码以处理webdriver对象并关闭chrome实例。
目前我只是运行从ANT包装为testng方法的测试脚本,并生成testng-xslt报告。
的问题:
1。在测试方法中对webdriver脚本的每行代码执行验证:
我知道:
1. Selenium webdriver脚本包含API方法(findElement()和其他。),这些方法由于它们执行的默认断言/验证而抛出异常。当测试方法失败时,这些异常会出现在生成的报告中
2. TestNG提供了具有许多断言方法的Assert类,但我还没弄明白如何使用它们对webdriver脚本的每一行代码执行验证/断言。我尝试在每行webdriver脚本代码之后添加断言方法。输出中出现的只是测试方法的AssertionError异常。
2。由于try .. catch阻止而导致某个测试方法失败。
如果我在一组2个或更多的测试驱动器脚本步骤中使用try catch块,并且如果测试用例在任何步骤(脚本行)中失败,则try..catch块处理它,从而显示测试方法as"通过"在执行报告中,实际上失败了。
第3。创建一个自定义报告,显示所需的测试执行结果,而不是堆栈跟踪!
当我执行上面的脚本时,会生成一个testng-xslt报告,其中包含测试套件中每个测试方法的通过/失败状态(在testng.xml中配置)。
测试结果只能告诉我测试方法是通过还是失败,并提供了异常的堆栈跟踪,它实际上并没有提供任何有用的信息。
我不想要这样的抽象级别的测试执行结果,但是类似于:
姓名|开始|持续时间|什么是真的错了(失败)
任何人都可以建议/给出一些指示:
1. 如何在测试方法中对每一行webdriver脚本代码执行验证/断言,而不必在每个脚本行后写入断言?
2. 如何通过try catch块传递某个测试方法失败?
3。如何自定义故障报告,以便我可以发送失败结果,例如"预期元素"按钮" id" bnt12"但没有找到测试方法步骤3中的元素" to testng的报告工具?
4. 在testng-xslt报告中,我想显示测试方法中发生故障的确切位置。因此,例如,如果我的测试方法由于测试方法第3行的webelement = driver.findElement()而失败,我想在测试报告中显示这个问题" What-really-went -wrong"柱。我已经阅读了关于testng testlisteners TestListenerAdapter / ITestListener / IReporter的内容,但是在检查了testng的javadoc之后我不明白如何使用它们。
5. 此外,完成自定义测试报告后,我必须实现PageObject模式。在页面对象模式中执行断言的正确位置在哪里?断言是应该在页面对象测试方法中还是在使用PageObject类的更高级别测试方法中编写?
P.S:我对testng框架和webdriver脚本完全陌生。如果在帖子中有任何技术错误或观察错误,请承担。
答案 0 :(得分:1)
如何在测试方法中对webdriver脚本的每行代码执行验证/断言,而无需在写入后执行断言 每个脚本行?
我不这么认为。进行比较的是断言。所以你需要它。
如何通过try catch块传递某个测试方法失败?
try-catch将掩盖断言失败。(因为在断言失败时,会抛出一个断言异常,所以如果你的catch块就像(catch(Exception e)
)断言失败不会逃脱catch块。
如何自定义故障报告,以便我可以发送失败结果,例如"预期元素"按钮" id" bnt12"但是做到了 在测试方法的第3步找不到元素" to testng的报道 效用
您需要使用测试侦听器。 TestNG TestListenerAdapter是一个好的开始
另外,一旦完成,我必须实现PageObject模式 自定义测试报告。哪里是正确的表演地点 页面对象模式中的断言?是否应该写入断言 页面对象测试方法或在更高级别的测试方法中 将使用PageObject类?
我个人的选择是在测试方法中使用断言,因为它是我们进行实际测试的地方。页面对象包含用于在网页内导航的脚本。
答案 1 :(得分:0)
如何自定义故障报告,以便发送故障 结果类似于ID为“ bnt12”的“预期元素”按钮”,但没有 找到测试方法第3步中的元素” 实用程序?
您可以使用范围报告和testng侦听器类(在该类中,使用onTestFailure
方法来自定义故障报告)。