9.pytest 单元测试框架

本文详细介绍了 pytest 单元测试框架的使用,包括基本的断言、Fixture、参数化、运行测试、生成测试报告以及扩展功能。通过实例演示了如何创建测试用例、使用 Fixture 初始化和还原环境、参数化测试、运行测试用例和生成 HTML 格式报告。还讨论了 pytest 的优势,如简化测试用例编写,以及一些常用插件如 pytest-html 和 pytest-rerunfailures 的应用。
摘要由CSDN通过智能技术生成

pytest 是一个第三方单元测试框架,更加简单、灵活,而且提供了更加丰富的扩展,弥补了 unittest 在做 Web 自动化测试时的一些不足。

1. pytest 简单例子

pytest 支持 pip 安装,pip install pytest

创建 test_sample.py 文件,代码如下:

def inc(x):
    return x + 1

def test_answer():
    assert inc(3) == 5

命令行窗口,进入到 test_sample.py 文件所在目录,直接输入 “pytest” 即可。运行结果如下:
在这里插入图片描述
从上看出,pytest 的优点是它更加简单,不必创建测试类,使用 assert 断言也更加简单。

不过,pytest 也有自己的规则,即测试文件和测试函数必须以“test”开头。所以运行时才不用指定文件。

如果要像 unittest 通过 main() 方法执行测试用例,需要修改下 test_sample.py 文件:

import pytest

def inc(x):
    return x + 1

def test_answer():
    assert inc(3) == 5

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

main()方法默认执行当前文件中所有以“test”开头的函数。这样就可以直接在 IDE 中运行测试了。

2. pytest 的基本使用方法

前面我们学习了 unittest 的基础,现在只需对比 pytest 与 unittest 之间的不同即可。

(1)断言

unittest 单元测试框架中提供了丰富的断言方法,而pytest 单元测试框架并没有提供专门的断言方法,而是直接使用 Python 的 assert 进行断言。

下面创建 test_assert.py 文件,介绍 pytest 断言的用法:(借助 Python 的运算符号和关键字即可轻松实现不同数据类型的断言。)

# 功能:用于计算 a 与 b 相加的和
def add(a, b):
    return a + b

# 功能:用于判断素数
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

# 测试相等
def test_add1():
    assert add(3, 4) == 7
# 测试不相等
def test_add2():
    assert add(17, 22) != 50
# 测试大于或等于
def test_add3():
    assert add(17, 22) <= 50
# 测试小于或等于
def test_add4():
    assert add(17, 22) >= 38
# 测试包含
def test_in():
    a = 'hello'
    b = 'he'
    assert b in a
# 测试不包含
def test_not_in():
    a = 'hello'
    b = 'hi'
    assert b not in a
# 判断是否为 True
def test_true_1():
    assert is_prime(13)
# 判断是否为 True
def test_true_2():
    assert is_prime(7) is True
# 判断是否不为 True
def test_true_3():
    assert not is_prime(4)
# 判断是否不为 True
def test_true_4():
    assert is_prime(6) is not True
# 判断是否为 False
def test_false_1():
    assert is_prime(8) is False

(2)Fixture

Fixture 通常用来对测试方法、测试函数、测试类和整个测试文件进行初始化或还原测试环境。

创建 test_fixtures_01.py 文件:

# 功能函数
def multiply(a, b):
    return a * b

# =====Fixture========
def setup_module(module):
    print("setup_module=====================>")

def teardown_module(module):
    print("teardown_module==================>")

def setup_function(function):
    print("setup_function-------->")

def teardown_function(function):
    print("teardown_function----->")

def setup():
    print("setup------>")

def<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值