python - 使用unittest时不理解python中的作用域

标签 python oop python-unittest

我正在学习 python 中的单元测试,但不了解范围。我正在看书,看到了例子:

import unittest
from app.calculate import Calculate

class TestCalculate(unittest.TestCase):
    def setUp(self):
        self.calc = Calculate()

    def test_add_method_returns_correct_result(self):
        self.assertEqual(4, self.calc.add(2,2))

if __name__ == '__main__':
    unittest.main()

工作正常。我的代码:

#!/usr/bin/env python3

import unittest
from gif_grabber import *
import xml.etree.ElementTree as ET

class TestGetRssXml(unittest.TestCase):
    def setUP(self):
        self.valid_url    = "http://animesquads.tumblr.com/rss"
        self.no_exist_url = "http://animesquads.sdfsdfsdf12=.com/rss"
        self.no_rss_url   = "http://animesquads.tumblr.com"

    def test_valid_rss_url(self):
        self.assertEqual(ET.Element, type(get_rss_xml(self.valid_url)))

    def test_url_unvaliable(self):
        #TODO check with no_exist_url
        pass

    def test_no_rss_url(self):
        #TODO check if url no rss
        pass

if __name__ == '__main__':
    unittest.main()

当我运行此测试时,出现错误。

ERROR: test_valid_rss_url (__main__.TestGetRssXml)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./gif_grabber_test.py", line 14, in test_valid_rss_url
    self.assertEqual(ET.Element, type(get_rss_xml(self.valid_url)))
AttributeError: 'TestGetRssXml' object has no attribute 'valid_url'

为什么我的变量范围与书中示例中的代码类似,但它不起作用。请帮我找出错误,并解释我哪里出错了。

最佳答案

您应该将 setUP 重命名为 setUp。否则它不会被执行,并且 valid_url 将不会被设置(即 python 单元测试只会在执行测试之前调用完全命名为 setUp 的函数)

关于python - 使用unittest时不理解python中的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37833896/

相关文章:

php - 如何在 PHP 中实现复制构造函数?

python - os.getcwd() 上的 FileNotFoundError [Errno 2]

django - 运行 Django 测试时出错

python - 在 Numpy 中计算特征值不起作用 : Each element is a float

python - 区分具有多列的 Pandas 数据框

python - RE 处理两种格式

python - 在查找表中查找字符串值以填充第二个数据框

oop - Delphi7中sleep()函数的替代方案

Javascript ES6 类属性赋值

python - 如何模拟对 pyspark sql 函数的内部调用