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

2024-09-30 16:35:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

比方说,一个测试用例失败了,您需要执行一些操作,比如截屏。然后你就可以把它写在一个地方,而不是把它写在每个事后的方法中。在


Tags: 方法功能框架地方测试用例事情测试项目侦听器
2条回答

这个类将像这样从测试用例中调用 测试状态.mark('testName',result,'message you want to log') 结果是布尔值

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()

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

^{pr2}$

@阳光,谢谢你的回复。一个问题。在

我看到,在测试用例函数“deftest_accountSignup(self)”,在测试用例的末尾,您添加了一行

self.test_status.mark("test_accountSignup", result,
                               "Signup was successful")

如果测试用例在到达测试之前失败了呢_状态标记调用测试用例。例如:如果测试用例在生产线上失败了会发生什么

^{pr2}$

我想,在这种情况下,这个特定测试用例的测试结果不会被捕获。对的?在

您认为,我们应该改为编写如下所示的测试用例吗?在

def test_accountSignup(self):
  try:
   # Write all the test case specific code here
   self.test_status.mark("test_accountSignup", "Passed",
                               "test_accountSignup passed")
  except Exception as e:
     self.test_status.mark("test_accountSignup", "Failed",
                               "test_accountSignup failed. Exception is: "+e.message)

请告诉我你的想法。再次感谢!在

相关问题 更多 >