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

如何在Python测试框架中实现TestNG侦听器?

南宫正阳
2023-03-14

我正在尝试学习python来处理一个测试项目。是否有一种方法可以在python测试框架中实现类似功能的TestNG侦听器。

侦听器有诸如OnTestFailure()、OnTestSuccess、OnStart()等方法,当您想要做某些事情时,这些方法非常有用。

比方说,一个测试用例失败了,您想执行一些操作,比如截图。然后你可以只在一个地方写,而不是在每个测试方法中都写。

共有1个答案

邓宜年
2023-03-14

此类将从测试用例中调用,类似于teststatus.mark('test name'、result、'message you want to log')result是一个布尔值

class TestStatus(unittest.TestCase):

    def __init__(self):
        super(TestStatus, self).__init__()

    def mark(self, testName, result, resultMessage):
        testName = testName.lower()
        try:
            if result:
                self.log.info("Verification successful :: " + resultMessage)
            else:
                # If the test fails,
                # this calls screenshot method from util class
                self.util.screenShot("FAIL" + mapKey)
                self.log.info("Verification failed :: " + resultMessage)
        except:
            self.log.info("### Exception Occurred !!!")
            traceback.print_stack()

这是测试用例类中的一个示例测试用例:

def test_accountSignup(self):
    # Generate a username and password to use in the test case
    userName = self.util.getUniqueName()
    password = self.util.getUniqueName()
    # You can ignore this, this is calling a method
    # signup from the account page (page object model)
    self.accounts.signup(userName, password)
    # This call is also from the page object, 
    # it checks if the sign up was successful
    # it returns a boolean
    result = isSignUpSuccessful()
    # test_status object was created in the setUp method
    #
    self.test_status.mark("test_accountSignup", result,
                               "Signup was successful")
 类似资料:
  • 方法正在传递,这太好了,但是为什么的结果会出现在库测试结果中,我不明白。我怎么才能避免呢? 我在这里列出了和的完整代码。

  • Q1)我在Selenium-TestNG中有一个现有的框架以及Listeners类。我使用testng的@aftertest注释关闭浏览器: 这里,Listeners类的onTestSuccess方法在我作为没有cucumber特性文件的普通旧Selenium TestNG运行时工作得非常好: 当测试通过时,首先调用Listeners类的onTestSuccess()方法,然后调用teardown

  • 问题内容: 我有一个要求,如果在db表中插入一条记录,则需要自动执行一个Java进程。实现db侦听器的最简单方法是什么? 问题答案: 我有一个针对Oracle的解决方案。自从甲骨文购买了Java以来​​,你不需要创建自己的应用程序,因此它发布了一个监听器。据我所知,这在内部不使用轮询,而是将通知推送到Java端(可能基于某些触发器): 你可以像这样实现它(这只是一个示例): 编辑: 你可以使用以下

  • 我目前正在为一个包含大量模块的大项目创建TestNG测试用例。现有的大多数单元测试实际上都是集成测试,因为它们非常依赖于/opt文件夹中的配置文件以及正在运行的数据库和消息队列。 为了使事情进一步复杂化,测试用例使用配置位于resources/meta-inf/services/org.TestNG.itestnglistener文件中的TestNG侦听器。这个文件中的侦听器触发所有测试用例(正如

  • 我有一个内部使用Akka的Spring MVC应用程序。其中一个参与者正在调用已使用MockRestServiceServer模拟的REST服务。当我运行调用控制器和有趣的参与者的测试时,即使内部抛出异常,测试也会通过。 我在日志中看到以下异常堆栈跟踪。在测试用例中,我还在验证模拟服务器(mockRestServiceServer.verify())之前放入了一个Thread.sleep(5000