为什么Python在输入另一个类的def时不进入一个类的def?

时间:2013-07-14 19:15:04

标签: python

所以,下面是两个班级。当我对它们运行unittest(python -m unittest -v unit_test时,此代码保存为“unit_test.py”)然后执行第二个类中的测试,但不执行第一个类中的测试。有什么可能出错的线索?

重要的一切似乎都是相同的,但Python只是从第一类的def setUp(self):行跳到第二类。 (因为它会跳过那里,我认为发布该类中显示的hac.process_lines()代码并不重要。)任何帮助都非常感谢。谢谢!

class TestClient(unittest.TestCase):
    """
    Tests the central clause of the program                                                                        
    """
    def setUp(self):                                                                                               
        self.store = {}                                                                                            
        self.example_1 = ['set foo bar', 'get foo', 'set baz bat', 'list',                                         
        'delete foo', 'get baz']                                                                                   
        self.example_2 = ['auth test testpw', 'set foo bar', 'get foo', 'set \                                     
        baz bat', 'list', 'delete foo', 'get baz']                                                                 

    def correct_dictionary_v1(self):                                                                               
        self.store = hac.process_lines(self.example_1)                                                             
        self.assertEqual(self.store, {'baz': 'bat'})                                                               

    def correct_dictionary_v2(self):                                                                               
        self.store = hac.process_lines(self.example_2)                                                             
        self.assertEqual(self.store, {'baz': 'bat'})


class TestGetValue(unittest.TestCase):                                                                             
    """                                                                                                            
    Tests the 'get' command function                                                                               
    """
    def setUp(self):
        self.store = {}                                                                                            
        self.key = 'key'
        self.value = 'value'                                                                                       

    def test_good_input(self):
        self.store = {'key': 'value'}                                                                              
        self.assertEqual('value', hac.get_value(self.store, self.key))                                             

    def test_missing_key(self):
        self.store = {}                                                                                            
        self.assertEqual(1, hac.get_value(self.store, self.key))        

2 个答案:

答案 0 :(得分:4)

测试必须以以'test'开头的名称开头。因此,要在第一堂课中运行测试,请将correct_dictionary_v1更改为test_correct_dictionary_v1,将correct_dictionary_v2更改为test_correct_dictionary_v2

来自the docs

  

TestLoader使用'test'方法名称前缀自动识别测试方法。

答案 1 :(得分:0)

在每个测试方法之前运行测试用例的setUp方法。您的TestClient没有测试方法。如果您希望correct_dictionary_v1v2成为测试方法,请使用“test”一词开头。