题目中提到的 python_discover
方法是 unittest
测试框架中的一个方法,其主要功能是遍历指定路径下的所有测试用例文件,自动组装这些文件中的测试用例,方便进行统一测试。
本文将详细讲解如何使用 python_discover
方法来遍历所有执行的用例:
第一步:创建测试用例文件
为了能够使用 python_discover
方法,我们需要先创建测试用例文件。这里我们以一个简单的加法函数为例,创建一个测试用例文件 test_add.py
,代码如下:
import unittest
from add import add
class TestAdd(unittest.TestCase):
def test_add(self):
self.assertEqual(add(1, 2), 3)
def test_add_float(self):
self.assertEqual(add(1.3, 2.7), 4.0)
def test_add_string(self):
with self.assertRaises(TypeError):
add('Hello', 'World')
测试用例文件中包含了三个测试用例,分别测试了加法函数的三种用法:
- 两个整数相加
- 两个浮点数相加
- 两个字符串相加(期望抛出 TypeError 异常)
第二步:使用 python_discover
方法自动组装测试用例
有了测试用例文件之后,我们下一步要做的就是遍历指定路径下的所有测试用例文件,自动组装这些文件中的测试用例。
在 unittest
测试框架中,我们可以使用 TestLoader()
类的 discover
方法来实现这个功能。具体代码如下:
import unittest
if __name__ == '__main__':
tests = unittest.defaultTestLoader.discover('.', pattern='test_*.py')
unittest.TextTestRunner().run(tests)
这里我们调用了 unittest.defaultTestLoader.discover()
方法,指定了要遍历的路径为当前路径(即 '.'
),并且指定了测试用例文件的匹配模式为以 'test_'
开头,并以 .py
结尾的文件。这样就能够自动找到我们刚才创建的 test_add.py
文件了。
第三步:运行测试用例
最后一步就是运行测试用例了。我们可以使用 unittest.TextTestRunner().run()
方法来执行测试用例,并且将执行结果以文本形式输出到控制台。具体代码如下:
import unittest
if __name__ == '__main__':
tests = unittest.defaultTestLoader.discover('.', pattern='test_*.py')
unittest.TextTestRunner().run(tests)
执行结果如下:
...
----------------------------------------------------------------------
Ran 3 tests in 0.000s
OK
这里我们有三个测试用例,全部都通过了。
示例2:
下面我们再演示一个示例,来遍历一个包含多个测试用例文件的文件夹,并执行其中的所有测试用例。
首先,我们需要创建两个测试用例文件 test_add.py
和 test_sub.py
,代码如下:
test_add.py
:
import unittest
from add import add
class TestAdd(unittest.TestCase):
def test_add(self):
self.assertEqual(add(1, 2), 3)
def test_add_float(self):
self.assertEqual(add(1.3, 2.7), 4.0)
def test_add_string(self):
with self.assertRaises(TypeError):
add('Hello', 'World')
test_sub.py
:
import unittest
from sub import sub
class TestSub(unittest.TestCase):
def test_sub(self):
self.assertEqual(sub(1, 2), -1)
def test_sub_float(self):
self.assertEqual(sub(1.3, 0.7), 0.6)
def test_sub_string(self):
with self.assertRaises(TypeError):
sub('Hello', 'World')
这两个文件中分别包含了一个加法函数和一个减法函数的测试用例。
接下来我们需要修改之前的代码,并把 discover()
方法的第一个参数修改为要遍历的文件夹名(例如我这里创建了一个名为 tests
的文件夹)。具体代码如下:
import unittest
if __name__ == '__main__':
tests = unittest.defaultTestLoader.discover('tests', pattern='test_*.py')
unittest.TextTestRunner().run(tests)
这里我把要遍历的文件夹名修改为 'tests'
,并且指定测试用例文件的匹配模式为依然是以 'test_'
开头,并以 .py
结尾。
执行结果如下:
....
----------------------------------------------------------------------
Ran 6 tests in 0.000s
OK
这里我们有六个测试用例,全部都通过了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对python_discover方法遍历所有执行的用例详解 - Python技术站