我正在使用python unittest来测试使用硒的Web应用程序。在我的teardownClass中,我正在调用cls.fail,但它返回“ AttributeError”,说在“字符串”中找不到“ failureException”。
这是我的teardownClass方法的样子:
@classmethod
def tearDownClass(cls):
browser_logs = cls.driver.get_log("browser")
errors = [log_entry['message'] for log_entry in browser_logs if logentry['level'] == 'SEVERE']
if errors:
cls.fail(errors)
这将返回以下attributeError:
======================================================================
ERROR: tearDownClass (__main__.unitTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/shahrukh/Desktop/apollotest/test_users.py", line 239, in tearDownClass
cls.fail("error")
File "/usr/lib/python3.6/unittest/case.py", line 670, in fail
raise self.failureException(msg)
AttributeError: 'str' object has no attribute 'failureException'
----------------------------------------------------------------------
/usr/lib/python3.6/unittest/case.py文件中的“失败”方法:
def fail(self, msg=None):
"""Fail immediately, with the given message."""
raise self.failureException(msg)
此方法是“测试用例”类的一部分
问题在于上面的fail方法找不到对self的引用。我的代码中的“错误”是一个字符串对象。因此,当我致电cls.fail(errors)
时,它会认为self = errors,而msg仍为None。
如果我将代码语句更改为cls.fail(cls, errors)
,我不会遇到这个问题。
我想了解为什么我会遇到这种现象?我是否遗漏了任何东西,因为根据我的理解,cls.fail
应该表示故障方法中的self
等于cls
。
非常感谢您的帮助。