pytest简介

    • 介绍

pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:

简单灵活,容易上手

支持参数化

能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)

pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等

测试用例的skip和xfail处理

可以很好的和jenkins集成

report框架----allure 也支持了pytest

    • 安装

pip install pytest

或者在pycharm设置中进行安装

pytest简介_第1张图片

检查安装是否成功以及安装的版本,命令行命令如下:

  pytest --version
    • 用例编写

当我们通过 pytest 执行用例时,pytest 会自动递归遍历执行路径下所有的目录,根据 pytest 中默认用例的识别的规则,自动收集测试用例。所有在使用 pytest 编写测试用例之前,我们首先需要了解一下 pytest 收集用例时默认的用例识别规则。

默认的用例识别的规则

用例文件:所有文件名为 开头 或者 开头的文件会被识别为用例文件。test__test

用例类,测试文件中没有每个 Test 开头的类型就是一个测试用例类。

测试用例:测试类中每个 test 开头的方法就是一条测试用例,测试文件中每个 test 开头的函数也是一条测试用例,

例如:

pytest简介_第2张图片
pytest简介_第3张图片

断言

pytest 里面断言实际上就是 python 里面的 assert 断言方法,常用的有以下几种
assert xx :判断 xx 为真
assert not xx :判断 xx 不为真
assert a in b :判断 b 包含 a
assert a == b :判断 a 等于 b
assert a != b :判断 a 不等于 b
    • 执行

pytest简介_第4张图片
只重新运行上次失败的用例
pytest  --lf -vs
先运行上次失败的用例再运行其余的测试用例
pytest  --ff 

python代码执行pytest(main函数)

pytest简介_第5张图片
    • 常用命令行参数

-x 用例一旦失败,就立刻停止执行
--maxfail=num 用例失败个数达到num后停止执行
-m 标记用例
-k 执行包含某个关键字的测试用例
-v 打印详细日志
-s 打印输出日志(一般-vs一起使用)
--collect-only 收集测试用例
    • 常用装饰器

参数化

class Testdome:
    a = ["1", "2", "3"]

    # 参数化,ids表示起别名
    @pytest.mark.parametrize("sum", a, ids=["test1", "test2", "test3"])
    def test_demo(self, sum):
        print(sum)
pytest简介_第6张图片
跳过测试用例

@pytest.mark.skip
#加入跳过原因
@pytest.mark.skip(reason="该条用例跳过")
pytest简介_第7张图片
    • 异常处理机制

try:
except
pytest简介_第8张图片
pytest.raises()
pytest简介_第9张图片
    • 常用数据驱动

excel

文件格式

pytest简介_第10张图片

数据驱动案例

pytest简介_第11张图片
pytest简介_第12张图片

csv文件

文件格式

pytest简介_第13张图片

数据驱动案例

pytest简介_第14张图片
pytest简介_第15张图片

json文件

文件格式

pytest简介_第16张图片

数据驱动案例

pytest简介_第17张图片

yaml文件

文件格式

pytest简介_第18张图片

数据驱动案例

pytest简介_第19张图片

你可能感兴趣的:(Python,测试,pytest,python,压力测试)