单元测试“fail”方法找不到对测试类的引用

2024-10-03 02:41:55 发布

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

我正在使用python unittest测试一个使用selenium的web应用程序。在我的催泪课上,我在打电话爬升失败但它返回“AttributeError”,表示在“string”中找不到“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中的“fail”方法/案例.py文件:

    def fail(self, msg=None):
        """Fail immediately, with the given message."""
        raise self.failureException(msg)

此方法是“Testcase”类的一部分

问题是上面的fail方法找不到self的引用。”我的代码中的“错误”是一个字符串对象。因此,当我调用cls.fail(errors)时,它会考虑self=errors,而msg保持为None。你知道吗

如果我把代码语句改成cls.fail(cls, errors),我就不会遇到这个问题。你知道吗

我想知道为什么我会有这种行为?我遗漏了什么,因为根据我的理解cls.fail应该意味着fail方法中的self等于cls。你知道吗

非常感谢你的帮助。你知道吗


Tags: 方法inpyselfbrowserlogdefmsg