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

Java 如何在Python测试框架中实现TestNG侦听器?,java,python,selenium-webdriver,testng,pytest,Java,Python,Selenium Webdriver,Testng,Pytest,我正在尝试学习python,以便在测试项目中工作。 有没有一种方法可以在python测试框架中实现类似TestNG监听器的功能 监听器有诸如OnTestFailure()、OnTestSuccess、OnStart()等方法,这些方法在您想做某些事情时非常有用 比方说,一个测试用例失败了,您需要执行一些操作,比如截图。然后,您可以只在一个地方编写它,而不必在每个后续测试方法中也编写它。这个类将从测试用例中调用,如下所示 标记('testName',结果,'要记录的消息') 结果是一个布尔值 类T

我正在尝试学习python,以便在测试项目中工作。 有没有一种方法可以在python测试框架中实现类似TestNG监听器的功能

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


比方说,一个测试用例失败了,您需要执行一些操作,比如截图。然后,您可以只在一个地方编写它,而不必在每个后续测试方法中也编写它。

这个类将从测试用例中调用,如下所示 标记('testName',结果,'要记录的消息') 结果是一个布尔值

类TestStatus(unittest.TestCase):
定义初始化(自):
super(TestStatus,self)。\uuuu init\uuuuu()
def标记(self、testName、result、resultMessage):
testName=testName.lower()
尝试:
如果结果为:
self.log.info(“验证成功::”+结果消息)
其他:
#如果测试失败,
#这将从util类调用screenshot方法
self.util.screenShot(“FAIL”+mapKey)
self.log.info(“验证失败::”+结果消息)
除:
self.log.info(“###发生异常!!!”)
traceback.print_stack()
这是测试用例类中的一个示例测试用例:

def测试账户注册(自助):
#生成要在测试用例中使用的用户名和密码
userName=self.util.getUniqueName()
password=self.util.getUniqueName()
#你可以忽略这个,这是在调用一个方法
#从帐户页面注册(页面对象模型)
self.accounts.signup(用户名、密码)
#此调用也来自页面对象,
#它检查注册是否成功
#它返回一个布尔值
结果=isSignUpSuccessful()
#已在设置方法中创建测试\u状态对象
#
自我测试状态标记(“测试帐户注册”,结果,
“注册成功”)

@Sunshine,谢谢您的回复。一个问题

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

self.test_status.mark("test_accountSignup", result,
                               "Signup was successful")
如果测试用例在到达test_status.mark调用之前的某个地方失败了该怎么办。例如:如果测试用例在线路上失败,将会发生什么

self.accounts.signup(userName, password) 
我猜,在这种情况下,不会为这个特定的测试用例捕获测试结果。对吗

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

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)

请让我知道你的想法。再次感谢

您能找到一种在python中实现这一点的方法吗?我也在找同样的。请让我知道。在python中,默认情况下这是不存在的。我实现了一个类来断言测试用例结果,然后使用if条件来查看测试是否成功。如果测试不成功,那么我将调用屏幕截图方法。@sridhar249查看我发布的答案,我认为它对您应该有帮助。您好sridhar249,您可以重新表述您的答案,即使SunShine决定删除她的答案,它也可以作为答案。@sridhar249,您的方式很好,但您实际上不需要这样做,因为这应该在self.accounts.signup(用户名、密码)方法中处理。此方法应具有try-except块。除此之外,您可以在tearDown方法中捕获结果,然后根据结果调用test_status.mark()。这样做的好处是,您必须只在tearDown方法中编写代码,而不是在每个测试方法中重复相同的代码行。