Pytest使用记录
Pytest简介
Pytest是一个易用、强大、灵活的功能测试框架,并且兼容unittest和nose的测试用例。
- 易用: 用例编写简单, 断言方便
- 强大: 全能的mark, 强大的fixtures
- 灵活: 灵活的执行控制及丰富的插件
Pytest安装指令
pip install pytest
Pytest编写规则
- 测试文件以test_开头,或以_test结尾
- 测试类以Test开头,并且不能带有 init 方法
- 测试函数以test_开头
- 断言使用python自带的assert
项目结构目录
假设我的项目结构如下图所示,在项目目录下专门创建了一个test文件夹,里面存放的都是与测试相关的文件。
├── my_project
├── src
├── main.py
└── test
├── pytest.ini
├── test_1.py
└── test_2.py
其中,pytest.ini
为pytest的配置文件,名称是固定的不能随便更改,假设配置文件如下,这里我只是简单配置了下标签mark,后面会使用到mark:
[pytest]
markers =
mo1: module 1
假设在main.py
中实现了一个非常简单的方法:
import math
def func(x: int, y: int):
return math.pow(x, y)
然后在测试文件中调用该方法,进行测试(在这里去实现自己需要测试的方法),假设test_1.py
为(判断结果是否正确,主要是使用assert语句):
import pytest
from main import func
@pytest.mark.mo1
def test_interface1():
assert func(1, 1) == 1
@pytest.mark.mo1
def test_interface2():
assert func(2, 1) == 2
def test_interface3():
assert func(2, 2) == 4
注意,其中有些函数上添加了@pytest.mark.mo1
装饰器,mo1
是我们在ini
文件中提前声明了的,后面可以指定去执行哪些标签mark下的测试方法。
执行测试方法
在项目根目录打开系统终端
- 执行test文件夹下所有测试文件
pytest -v ./test/
- 执行指定测试文件
pytest -v ./test/test_1.py
- 执行指定标签mark下的测试方法(这里就测试之前标注的
mo1
标签下的方法)
pytest -v -m 'mo1' ./test/
通过终端输出可以看到,一共有6个测试方法,但属于mo1
标签的只有2项,并仅测试这两项方法。
常见指令参数
-
-v
表示输出更加详细的测试信息 -
-x
表示一旦遇到测试失败就立即退出(默认情况是会执行所有测试样例的,无论是否有测试失败的情况) -
-q
为安静模式,测试过程中不会输出测试环境以及测试进度等信息,只返回测试结果 -
-s
打印测试函数中的print
输出,默认是不打印的 -
-m
仅执行指令标签mark下的测试方法
更多指令参数可查看pytest的帮助文档:
pytest -h
对于常用的参数指令可以直接写在pytest.ini
文件的addopts
中,这样就不需要手动输入了。
[pytest]
addopts = -v
markers =
mo1: module 1
Pytest插件使用
Pytest-ordering
有时在测试代码中可能需要按照一定的顺序去执行测试代码,此时可以使用pytest-ordering
包来控制执行的顺序。
- 安装
pytest-ordering
pip install pytest-ordering
- 在测试代码中加上装饰器
@pytest.mark.run(order=1)
,其中order代表着执行顺序,数字越小执行优先级越高。
import pytest
from main import func
@pytest.mark.run(order=1)
def test_interface1():
print("test1")
assert func(1, 1) == 1
@pytest.mark.run(order=3)
def test_interface2():
print("test2")
assert func(2, 1) == 2
@pytest.mark.run(order=2)
def test_interface3():
print("test3")
assert func(2, 2) == 4
- 再次执行测试程序
pytest -vs ./test/test_1.py
通过终端的输出,可以发现执行的顺序是按照我们给定的order
顺序来执行的。pytest -vs ./test/test_1.py
参考链接
Pytest - 使用介绍
Pytest基础使用教程
pytest文档18-配置文件pytest.ini
Pytest系列 - pytest-ordering用例的执行顺序
本文地址:https://blog.csdn.net/qq_37541097/article/details/111879795
上一篇: 爸妈走过的路多,该听
推荐阅读