文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何实现进行Python测试模块

2023-06-17 16:48

关注

小编给大家分享一下如何实现进行Python测试模块,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

为了更容易实现这种Python 测试模块,避免多次复制并粘贴测试函数以及设置惟一的名称,py.test 和 nose 都支持衍生测试,它实际上是一个迭代器,然后使用它的 yield 语句并提供调用参数。

但是,之后它们都会遇到相同的情况:它们必须检查模块列表,寻找开发人员希望作为测试运行的函数和类。正如在前一篇文章中看到的,py.test 往往选择单一标准,期望使用它的所有项目都遵守这一标准;而 nose 允许更丰富的定制,但是这会牺牲行为的可预测性。

对于测试发现,也是如此:py.test 按照固定、不可变且可预测的规则检测测试模块中的测试,而 nose 采用灵活的可定制的规则。如果项目使用 nose 执行测试,就先必须阅读项目的 Python 测试模块,了解 nose 是采用通常的测试检测规则,还是采用这个项目特有的规则。

下面是 py.test 使用的过程:

class Category(models.Model):         id = models.AutoField('id', primary_key=True)         name = models.CharField(maxlength=50)         code = models.CharField(maxlength=50)         parentCategory = models.ForeignKey('self', 'id', null=True)         enable = models.BooleanField()                  def __str__(self):             return self.name                  class Admin:             list_display = ('id', 'name', 'code', 'parentCategory')

当 py.test 检查 Python 测试模块的内部时,它收集名称以 test_ 开头的每个函数和名称以 Test 开头的每个类。无论类是否继承自 unittest.TestCase,它都会收集它们。测试函数直接运行,但是对于测试类,还必须搜索方法。类实例化之后,作为测试运行名称以 test_ 开头的所有方法。

如果测试类继承自标准的 Python unittest.TestCase 类,py.test 框架会表现出一种古怪的行为:如果类不包含 runTest() 方法,那么即使它包含几个 test_ 方法,py.test 也会抛出异常并失败。但是,如果存在 runTest() 方法,py.test 会忽略它;这个方法必须存在,py.test 才能接受这个类,但是不会运行这个方法,因为它的名称不是以 test_ 开头的。

为了纠正这种行为,可以在项目的 conttest.py 文件中或使用 -p 命令行选项激活框架的 unittest 插件:这会让 py.test 对其行为做三个更改。首先,不再只检测名称以 Test 开头的类,还会检测继承自 unittest.TestCase 的其他类。

第二,对于没有提供 runTest() 方法的 TestCase 子类,py.test 不再报告异常。第三,在类包含的测试之前和之后,以标准方式正确地运行 TestCase 子类中的所有 setUp() 和 tearDown() 方法。

尽管 nose 提供更强的定制能力,但是比较简单的测试发现过程如下:当 nose 检查 Python 测试模块的内部时,它采用在选择测试模块时使用的正则表达式。收集与这个正则表达式匹配的函数和类。(在默认情况下,寻找包含单词 Test 或 test 的名称,但是可以通过命令行或配置文件提供不同的正则表达式)。

当 nose 检查测试类的内部时,它运行与同一正则表达式匹配的方法。无须特别指定,nose 总会检测 unittest.TestCase 的子类并作为测试使用它们。但是,它会根据自己的正则表达式决定哪些方法是测试,而不使用标准的 unittest 模式 ^test。

以上是“如何实现进行Python测试模块”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯