您的位置:首页 > 编程语言 > Python开发

python测试开发之pytest框架(1)

2019-07-31 11:44 791 查看
原文链接:https://segmentfault.com/a/1190000014847419

见识简洁的单元测试 pytest

Python中很多大牛其实都有严重的强迫症,追求简洁和优雅的代码。必然的,他们会抛弃标准库中的unittest,使用或者发明自己心仪的单元测试框架。

正如其名,pytest是一个无数人推荐并在使用的Python单元测试框架,它使用起来非常简单,只要你的方法名以 test 开头就可以,你可以和需要测试的方法放在一起,亦或是新建一个文件来专门整理单元测试,都可以。

def your_func():
pass

def test_your_func():
assert result

这样的设计,就让你写单元测试成了顺手拈来的事,假如你写完了一个方法,想看看是否工作,在旁边直接写上一个test 开头的方法,稍微准备一下数据就可以验证这个方法好不好用,岂不妙哉?

pytest 的发明让大家意识到单元测试原来可以这么轻松和随意,完全没有必要去继承一个所谓的测试类或者按照复杂的规则才能开始书写测试代码,这也是我选择和推荐它的理由。

当然,如果原来你的单元测试时unittest写的话,pytest其实也是有可能兼容的的。

pytest 能够识别 unittest.TestCase 子类中的测试方法,如果文件名符合 test_*.py 或者 *_test.py 这样的规则。

并且大多数 unittest 的功能都是被支持的,例如:

  • @unittest.skip 装饰器;
  • setUp/tearDown;
  • setUpClass/tearDownClass();

我觉得,pytest有以下优点:

  1. 上手和使用足够简单
  2. 当case失败时信息足够丰富和直观,比如最后导致失败的变量值会打印出来
  3. 更丰富的运行参数
  4. 可以使用 assert 而不是 self.assert*
  5. 被广大IDE支持,社区资源丰富,用户群体大

让单元测试和IDE无缝集成

毕竟我们大多数人都不是神,不能用记事本写代码,IDE才是我们正确搬砖的方式。Python的首选IDE毋庸置疑就是 JetBrain 公司出品的 PyCharm。

在PyCharm中只要你将默认的单元测试驱动改成pytest,就可以在任意test开头的方法上通过右键菜单运行或者调试这个测试案例,非常方便。



如果你要运行当前文件的所有测试,只要从非test方法的其他区域点击右键即可。或者修改任意已经运行过的Configuration,添加你想要的参数,比如最多运行挂3个case就终止测试等等。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: