unittest之测试用例名称、收集规则


在unittest框架中,默认情况下,测试用例须以test开头

但一定是需要以test_开头吗?

答案:不是

在unittest中,用例以什么开头是可以自定义的,通过修改源码的方法。

我们知道,用例的加载时unittest中的 test loader 实现的。
loader.py模块中,有一个TestLoader类。类中有一个testMethodPrefix的属性,默认是test
当我们改成‘aaa’时,aaa开头的测试用例将会被收集和装载:

loader.py文件

class
TestLoader(object): """ This class is responsible for loading tests according to various criteria and returning them wrapped in a TestSuite """ testMethodPrefix = 'aaa' sortTestMethodsUsing = staticmethod(util.three_way_cmp) testNamePatterns = None suiteClass = suite.TestSuite _top_level_dir = None

我们来写一个aaa开头的用例示例并执行:

test_prac1.py

import unittest


class TestPra1(unittest.TestCase):
    def setUp(self):
        print("this is setUp")

    def tearDown(self):
        print("this is tearDown")

    def aaa_1(self):
        self.assertEqual(2, 4)
test_prac2.py

import unittest


class TestPra2(unittest.TestCase):
    def setUp(self):
        print("this is setUp")

    def tearDown(self):
        print("this is tearDown")

    def aaa_2(self):
        self.assertEqual(2, 4)

执行结果如下:

this is setUp
this is tearDown
this is setUp
this is tearDown
FF
======================================================================
FAIL: aaa_1 (test_pra1.TestPra1)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:\unitPrac\test_pra1.py", line 16, in aaa_1
    self.assertEqual(2, 4)
AssertionError: 2 != 4

======================================================================
FAIL: aaa_2 (test_pra2.TestPra2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:\unitPrac\test_pra2.py", line 17, in aaa_2
    self.assertEqual(2, 4)
AssertionError: 2 != 4

----------------------------------------------------------------------
Ran 2 tests in 0.000s

FAILED (failures=2)

Process finished with exit code 1

我们可以看到aaa_1和aaa_2都被执行了。
说明,收集用例的规则是可以通过loader模块的TestLoader类中的类属性testMethodPrefix来修改的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM