Unittest tests order

后端 未结 19 1316
刺人心
刺人心 2020-12-01 03:17

How do I be sure of the unittest methods order? Is the alphabetical or numeric prefixes the proper way?

class TestFoo(TestCase):
    def test_1(self):
               


        
19条回答
  •  我在风中等你
    2020-12-01 04:03

    A simple method for ordering "unittest" tests is to follow the init.d mechanism of giving them numeric names:

    def test_00_createEmptyObject(self):
        obj = MyObject()
        self.assertIsEqual(obj.property1, 0)
        self.assertIsEqual(obj.dict1, {})
    
    def test_01_createObject(self):
        obj = MyObject(property1="hello", dict1={"pizza":"pepperoni"})
        self.assertIsEqual(obj.property1, "hello")
        self.assertIsDictEqual(obj.dict1, {"pizza":"pepperoni"})
    
    def test_10_reverseProperty(self):
        obj = MyObject(property1="world")
        obj.reverseProperty1()
        self.assertIsEqual(obj.property1, "dlrow")
    

    However, in such cases, you might want to consider structuring your tests differently so that you can build on previous construction cases. For instance, in the above, it might make sense to have a "construct and veirfy" function that constructs the object and validates it's assignment of parameters.

    def make_myobject(self, property1, dict1):  # Must be specified by caller
        obj = MyObject(property1=property1, dict1=dict1)
        if property1:
            self.assertEqual(obj.property1, property1)
        else:
            self.assertEqual(obj.property1, 0)
        if dict1:
            self.assertDictEqual(obj.dict1, dict1)
        else:
            self.assertEqual(obj.dict1, {})
        return obj
    
    def test_00_createEmptyObject(self):
        obj = self.make_object(None, None)
    
    def test_01_createObject(self):
        obj = self.make_object("hello", {"pizza":"pepperoni"})
    
    def test_10_reverseProperty(self):
        obj = self.make_object("world", None)
        obj.reverseProperty()
        self.assertEqual(obj.property1, "dlrow")
    

提交回复
热议问题