单元测试“失败”方法无法找到对测试类的引用

时间:2019-07-15 12:46:03

标签: python xcode python-unittest

我正在使用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

非常感谢您的帮助。

0 个答案:

没有答案