使用 unittest 时不理解 python 中的范围
Don't understand scope in python when using 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 学习单元测试,但不了解范围。我正在看书,看到了例子:
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
的函数)