美文网首页带你认识Pytest的种种
Pytest(一) 为什么我们推荐使用Pytest

Pytest(一) 为什么我们推荐使用Pytest

作者: Light软件测试_小艾 | 来源:发表于2019-11-04 23:35 被阅读0次

    在python中,说到测试框架,大家脑海里第一个跳出来的肯定是unittest, 这个可是内置的标准模块啊,同时它的设计灵感来源于大名鼎鼎的JUnit, 感觉很厉害的样子。

    做自动化测试的或者开发中写单元测试的人估计大部分都用过它。

    可是小艾却不想介绍unittest, 其实它并没有那么好,记得某本书里的某一章就是说unittest的陷阱——必须继承类,fixture只对class level有效balabala。如果你用过它,相信你也有相同的感受。

    那么今天小艾想谈谈另外一个测试框架。robotframework?No, 它对我来说太过heavy,heavy的东西往往束缚太多,不能然你酣畅淋漓的发挥。那是什么?不卖关子啦,它就是pytest。 

    pytest是什么?我们来引用某篇文章的总结,pytest是一个健壮的Python测试框架,可以用于所有类型和级别的软件测试。

    pytest可以被开发团队、qa团队、独立测试团队、实践tdd的个人和开源项目使用。事实上,互联网上的项目已经从unittest或nose转向pytest,包括mozilla和dropbox。

    为什么?

    因为pytest提供了强大的特性,比如“assert”重写、第三方插件模型和强大而简单的fixture模型,这在任何其他测试框架中都是无与伦比的。

    Pytest如此诱人,小艾也在下面列出了几个喜欢pytest的理由。

    01 更少的"模板"

    使用unittest编写测试时,必须将unittest.testcase子类化,并将测试作为该类里的方法编写。在pytest中,你只需将测试指定为top函数即可。

    所以测试代码更简单,也更容易编写。你不必担心创建一个测试类去继承unittest.testcase, 在所有测试方法添加self等等。这些都是不必要的,你不用再处理了。

    unittest api设计来自JUnit,一个java测试框架。在java中,所有函数都必须作为类上的方法存在,因此这是测试框架的合理设计。但是python没有这个限制,所以我们不应该受到它的约束。

    02 更详细的失败信息

    pytest以一种可以存储中间值的方式重写测试。因此,在失败的情况下,它提供了关于断言的内容和失败的内容的详细解释。

    03 更灵活的fixture

    使用fixture,只需向测试函数添加一个参数。也可以对fixture进行参数化。fixture支持四个域:函数,类,模块和会话。

    04 测试参数化

    我们可以对任何测试进行参数化,并在没有任何代码重复的情况下覆盖所有单元的使用。而且你不用担心因为某一组测试数据导致测试失败,而无法运行后面的测试。

    05 小型的测试套

    pytest引入了python测试应该是简单的python函数的概念,而不是强迫开发人员将其测试包含在大型测试类中。

    06 集成CI

    pytest可以非常方便与CI工具集成,如Jenkins。

    07 支持插件

    pytest可以用钩子函数轻松扩展你自己的插件。市面上也有很多很炫的现成插件让你使用。

    08 活跃的社区

    pytest正由一个充满激情和成长的社区积极开发和维护, 所以它会变得越来越强大,你不担心它被人抛弃。

    列了那么多,我知道大家可能还是一头雾水,不过不要紧,后面小艾会为你们慢慢肢解测试框架中的高富帅pytest。

    相关文章

      网友评论

        本文标题:Pytest(一) 为什么我们推荐使用Pytest

        本文链接:https://www.haomeiwen.com/subject/dumjbctx.html