对python_discover方法遍历所有执行的用例详解

题目中提到的 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.pytest_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技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python目录操作之python遍历文件夹后将结果存储为xml

    我们来详细讲解一下如何使用Python对文件夹进行遍历,并将结果存储为XML格式的文件。 1. Python遍历文件夹 Python自带了os模块,可以方便的遍历文件夹。我们可以使用os.walk()方法来列举一个路径下的所有文件和子文件夹。 示例代码如下: import os for root, dirs, files in os.walk("/…

    python 2023年5月23日
    00
  • 使用Python抓取豆瓣影评数据的方法

    使用Python抓取豆瓣影评数据的方法 豆瓣是一个非常流行的电影评分网站,我们可以使用Python抓取豆瓣影评数据,进行数据分析和挖掘。在本攻略中,我们将详细讲解如何使用Python抓取豆瓣影评数据,并提供一些示例。 步骤1:获取电影ID 在抓取豆瓣影评数据之前,我们需要获取电影的ID。我们可以在豆瓣网站上搜索电影,并获取电影的URL。电影的ID就是URL中…

    python 2023年5月15日
    00
  • Python2包含中文报错的解决方法

    在Python2中,如果代码中包含中文字符,有时候会出现编码错误的问题。这个问题可能是由于Python2默认使用ASCII编码,而中文不在ASCII编码范围内导致的。以下是解决Python2包含中文报错的解决方法及整攻略。 1. 使用Unicode字符串 在Python2中,我们可以使用Unicode字符串解决包含中文字符的编码问题。Unicode字符串可以…

    python 2023年5月13日
    00
  • Python第三方库xlrd/xlwt的安装与读写Excel表格

    下面我将为你讲解 “Python第三方库xlrd/xlwt的安装与读写Excel表格”的完整实例教程。 1. 安装xlrd/xlwt库 在Python中使用xlrd和xlwt库来读取和写入Excel表格,需要先安装这两个库。使用pip命令进行安装,打开终端输入以下命令即可: pip install xlrd xlwt 安装完成后,我们就可以在Python中使…

    python 2023年5月13日
    00
  • 如何从 gensim 打印 LDA 主题模型? Python

    【问题标题】:How to print the LDA topics models from gensim? Python如何从 gensim 打印 LDA 主题模型? Python 【发布时间】:2023-04-06 01:05:02 【问题描述】: 使用gensim,我能够从 LSA 中的一组文档中提取主题,但是如何访问从 LDA 模型生成的主题? 打印…

    Python开发 2023年4月6日
    00
  • 在终端启动Python时报错的解决方案

    当我们在终端启动Python时,有时会遇到各种异常报错。这些报错可能是由于Python环境配置不正确、Python版本兼容、Python库缺失等原因引起的。以下是一些常见的终端启动Python时报错的解决方案: 1. ImportError ImportError通常是由于Python库缺失或版本不兼容引起的。解决方案是安装或更新相应的Python库。 示例…

    python 2023年5月13日
    00
  • 对Python中数组的几种使用方法总结

    对Python中数组的几种使用方法总结 在Python中,数组以列表(list)的形式出现,可以通过下标来访问,也可以进行增删改查等操作。本文将会介绍几种常见的Python数组使用方法。 1. 创建数组 创建数组可以使用[]或list(),例如: arr1 = [1, 2, 3, 4, 5] arr2 = list(range(1, 6)) 2. 访问数组元…

    python 2023年6月5日
    00
  • 详解Python中for循环的使用

    以下是“详解Python中for循环的使用”的完整攻略。 1. for循环简介 在Python中,for循环是一种常用循环结构,它可以遍历任何可迭代对象,例如列表、元组、字典、集合等。for循环的语法如下: for 变量 in 可迭代对象: 循环体 其中,变量表示每次循环中的元素,可迭代对象表示要遍历的对象,循体表示要执行的操作。 2. for循环的使用 2…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部