使用TestLoader控制用例执行顺序:可以使用TestLoader类来加载测试方法,通过重写TestLoader类的getTestCaseNames()方法来指定测试方法的执行顺序。
时间: 2024-05-14 17:18:44 浏览: 40
是的,你说得对。可以使用TestLoader类来控制用例的执行顺序。下面是一个示例:
```python
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
def test_sort(self):
a = [3, 6, 1, 7, 2]
a.sort()
self.assertEqual(a, [1, 2, 3, 6, 7])
def test_reverse(self):
a = [3, 6, 1, 7, 2]
a.reverse()
self.assertEqual(a, [2, 7, 1, 6, 3])
def test_append(self):
a = [3, 6, 1, 7, 2]
a.append(4)
self.assertEqual(a, [3, 6, 1, 7, 2, 4])
def test_pop(self):
a = [3, 6, 1, 7, 2]
a.pop()
self.assertEqual(a, [3, 6, 1, 7])
class MyTestLoader(unittest.TestLoader):
def getTestCaseNames(self, testCaseClass):
test_names = super().getTestCaseNames(testCaseClass)
test_names.sort()
return test_names
if __name__ == '__main__':
loader = MyTestLoader()
suite = loader.loadTestsFromTestCase(TestStringMethods)
unittest.TextTestRunner(verbosity=2).run(suite)
```
在上面的示例中,我们重写了TestLoader的getTestCaseNames()方法来对测试方法进行排序,从而指定了测试方法的执行顺序。在执行时,我们使用自定义的MyTestLoader类来加载测试用例,并执行所有测试方法。
阅读全文