Pytest 快速开始

我们先来感受一下 Pytest 的用例,老规矩——待测函数依然是 add()

  • 首先你要保证你已下载 pytest:pip install pytest
  • 然后再找个文件夹新建一个 test_demo.py 文件
    最后写下如下内容:

test_demo.py

import pytest

# 待测函数
def add(a, b):
    return a + b

def test_str():
    """测试字符串"""
    a, b = '1', '2'
    assert add(a, b) == '112'  # => 注意这里故意搞了个失败

def test_int():
    """测试整型"""
    a, b = 1, 2
    assert add(a, b) == 3

if __name__ == '__main__':
    pytest.main()

写法上和 unittest 很类似。不管是文件名还是用例名,都必须以test_开头,如test_add.pytest_str()不要去违反它!

我们写了两个测试用例,test_strtest_int,在 pytest 里面不拘于测试的形式,类方法和函数都可以,而 xunit 框架必须要写成用例方法。

Pytest 中并没有定义特定的断言函数,直接使用原生的assert语句即可,并且丰富了 assert 异常时的结果输出。

pytest.main()是 pytest 的运行函数,会自动查找当前文件夹(注意是当前文件所在的目录)的所有用例。

我们直接运行这个文件(如果你用的是 Pycharm 并且设置了默认测试运行框架是 pytest,那么结果并不是由 pytest.main() 生成的,而是由 Pycharm 中自动调用 pytest 框架执行的结果):


其中每一项已经给大家标记出来了,可以了解一下 pytest 结果中每种含义。这里面特别需要大家注意的一个概念就是 session,在 pytest 中把当次测试的运行过程(可以是一个指定的用例、用例文件或者测试项目),反正也就是说 pytest 的一次运行过程就是一个 session,这个过程到底运行多少用例取决于 pytest 根据你的指令找到了多少。

理解 session 对我们有什么用呢,以后测试固件的范围可以定义到 session 级别,这将是一个非常有价值的功能,unittest 是做不到的。能做到哪些呢?

  • 整个测试过程只启动一次浏览器,不管其中有多少用例;
  • 定义一些整个测试过程中都会用到的全局变量,比如处理接口的依赖;
  • 整个测试的环境初始化与环境清理;

以后再补充😡。

其他字段,相信大家都能见文知意。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Pytest 入门学习 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 简单灵活,...
    小娟_bb93阅读 2,478评论 0 5
  • 初次接触测试框架的你,肯定希望能更快速的编写自己的测试代码,那么我们开始吧! 1.Pytest介绍 pytest是...
    白习习_c942阅读 7,344评论 0 15
  • Pytest 是一个比较成熟且功能完备的 Python 测试框架。其提供完善的在线文档,并有着大量的第三方插件和内...
    派派森森阅读 4,399评论 0 12
  • 目录: 安装及入门 使用和调用方法 原有TestSuite使用方法 断言的编写和报告 Pytest fixture...
    韩志超阅读 5,454评论 0 5
  • 夏夜 明亮在记忆里 荧火虫的光 跳跃于狗尾草的律动 那羸弱的生命 浅浅地照亮 身后这片原野 请原谅 我曾经怎么荒废...
    滕家敏阅读 231评论 0 4