2016-06-15 4 views
1

私は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' 

なぜ私の可変スコープは本の例のコードと似ていますが、動作しません。私が間違いを見つけるのを助け、私が間違っている場所を説明してください。

+1

これは範囲の問題ではありません。 Pythonは大文字小文字を区別します。私はPyCharmが好きだが、YMMVのIDEに切り替えることをお勧めします。 – jonrsharpe

答えて

1

setUPからsetUpに名前を変更する必要があります。それ以外の場合は実行されず、valid_urlは設定されません(つまり、python単体テストでは、テストを実行する前に、正確にsetUpという関数しか呼び出しません)。

+0

ありがとうございます。私はもっ​​と注意します。 –

関連する問題