当前位置: 首页 > 知识库问答 >
问题:

在TestNG中自定义故障报告

长孙鸿波
2023-03-14

背景:

    null

>

  • @test(groups={“init”})public void openURL()
    包含用于启动webdriver并使用给定URL打开chrome>实例的webdriver代码。

    @test(dependsonGroups={“init”})public void testLogin()
    包含的webdriver代码指向:
    1。找到用户名密码文本输入元素,从属性文件中输入用户名密码。
    2。找到“登录”按钮并单击该按钮进行登录
    3。如果其他人已使用凭据登录,则管理强制登录方案。

    @test(dependsonMethods={“testlogin”})public void testPatientsScheduleList()
    包含用于检查是否计划了任何患者的webdriver代码。如果是,则获取名称并显示在控制台中。

    @test()public void testLogout()
    包含用于定位注销按钮并单击该按钮注销应用程序的webdriver代码。

    @aftertest()public void closeConnection()
    包含用于处置webdriver对象并关闭chrome实例的webdriver代码。

    目前,我只是运行作为来自ANT的testng方法包装的测试脚本,并生成一个testng-xslt报告。

    问题:

    1.对测试方法中webdriver脚本的每一行代码执行验证:

    我知道:
    1。Selenium webdriver脚本包含API方法(findElement()和其他方法)它们执行的默认断言/验证会引发异常。当测试方法失败时,这些异常会出现在生成的报告中。
    2。TestNG提供了Assert类,它有许多断言方法,但我还没有弄清楚如何使用它们对webdriver脚本的每一行代码执行验证/断言。我尝试在每一行webdriver脚本代码之后添加断言方法。输出中出现的只是TestMethod的AssertionError异常。

    3.创建一个自定义报告,它将显示期望的测试执行结果,而不是堆栈跟踪!
    当我执行上述脚本时,将生成一个testng-xslt报告,其中包含测试套件(在testng.xml配置)中每个测试方法的通过/失败状态。测试结果仅给出测试方法是否通过或失败,并提供异常的堆栈跟踪,而这实际上并不能提供任何有用的信息。我不想要这样抽象级别的测试执行结果,而是要类似于:

    Name Started Duration what-really-gend-ough(失败)


    有没有人可以就以下方面提出建议/给出一些指示:
    1。如何对测试方法中的webdriver脚本的每一行代码执行验证/断言,而不在每一行脚本后都写断言?
    2。我怎么能使某个测试方法失败,因为try catch块通过了这个测试方法?
    3。我如何自定义失败报告,以便我可以将“预期元素”按钮“id为”bnt12“但在test-method的步骤3中未找到元素”这样的失败结果发送到testng的报告实用工具?
    4。在testng-xslt报告中,我希望显示测试方法中发生故障的确切位置。例如,如果我的测试方法由于测试方法第3行的webelement=driver.findElement()而失败,我想在测试报告的“what-really-gent-ough”列中显示这个问题。我读过关于testng、testlisteners、TestListenerAdapter/ITestListener/IReporter的文章,但在检查了testng的JavaDocs之后,我不明白如何使用它们。
    5。此外,一旦我完成了测试报告的定制,我就必须实现PageObject模式。在页面-对象模式中执行断言的正确位置是什么?断言应该写在page object测试方法中,还是写在将使用PageObject类的更高级别的测试方法中?

    附注:我对测试NG框架和webdriver脚本是全新的。如有任何技术错误或观察错误,请自行承担。

  • 共有1个答案

    姬振濂
    2023-03-14

    我如何对测试方法中的webdriver脚本的每一行代码执行验证/断言,而不在每一行脚本后都写断言呢?

    我不这么认为。进行比较的是断言。所以你需要它。

    我如何使某个由于try catch块而通过的测试方法失败?

    try-catch将屏蔽断言失败。(因为在断言失败时,会抛出断言异常,所以如果您的catch块类似于(catch(exceptione)),则断言失败不会转义catch块。

    我如何自定义失败报告,以便我可以将一个像“预期元素”按钮“id为”BNT12“但在test-method的步骤3中未找到元素”这样的失败结果发送到testng的报告实用工具?

    您需要使用测试侦听器。TestNG TestListenerAdapter是一个很好的开始

    此外,一旦我完成了测试报告的定制,我就必须实现PageObject模式。在页面-对象模式中执行断言的正确位置是什么?断言应该写在page object测试方法中,还是写在将使用PageObject类的更高级别的测试方法中?

    我个人的选择是在测试方法中使用断言,因为这是我们进行实际测试的地方。Page objects包含用于在网页内导航的脚本。

     类似资料:
    • 我有一个项目,其中我使用mavenplugin来运行集成测试。我使用的是框架组合。出于项目目的,我在前面修改了TestNG的默认XML报告,以自定义项目需求。 我在CustomReporter类中实现了上述要求,该类扩展了TestNG的接口。早些时候,我使用了插件来运行这些测试方法,并在surefire插件中添加了

    • 我将使用诱惑报告来监控硒测试结果。我正在使用TestNG和Maven failsafe插件来运行测试。我找到了非常清晰的例子来修改pom。xml,以便在您使用Maven surefire插件时包含case的诱惑,但对Maven failsafe插件则没有。我假设配置应该非常相似,但它不适合我。这是我pom里的东西。xml: 这是我看到的错误: 任何建议都将不胜感激。我假设配置Maven故障保护插件

    • 问题内容: 目前,我正在以这种方式拍摄测试失败的屏幕截图: 我可以将自己的屏幕截图包含在TestNG报告链接或图片中吗?如果是,怎么办? 我在网上发现的只是FEST框架。但是由于我已经在截屏了,所以我不想使用其他框架。 问题答案: 是的,您可以在testng报告中包含指向屏幕截图的链接。 您需要通过使用@Listeners({yourListener.class})注释您的测试类或所有测试类的父级

    • 蓝鲸故障自愈,是腾讯蓝鲸推出的一款SaaS服务,目前可以支持和open-falcon无缝对接了,通过接入蓝鲸故障自愈系统,可以帮助使用open-falcon的用户,做到告警无人值守。 具体的配置非常简单: open-falcon接入蓝鲸 腾讯蓝鲸故障自愈的使用案例参考:蓝鲸故障自愈案例 那些年我们想做的无人值守

    • 我正在为《我的世界》创建一个mod。最近,我试图制作一个自定义块,我有两个问题。 我的主要问题是块渲染不正确。我希望块的大小比完整的块小。我成功地用改变了块的边界,虽然这确实使块渲染得更小,并使用了更小的边界,但它导致了其他渲染问题。当我放置块时,下面的地板变得不可见,我可以透过它看到下面的洞穴,后面的块,或者如果那里什么都没有,就可以看到虚空。我如何修复不渲染的块?这里有一个截图: 此外,我的目

    • 用下面的代码,如果测试用例通过,截图捕获成功并显示在报告中,但是当测试失败时,截图不显示,甚至截图超链接也不显示在报告中。谁能解决代码中的错误呢?