Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件

在这里插入图片描述
这些是之前的文章,里面有一些基础的知识点在前面由于前面已经有写过,所以这一篇就不再详细对之前的内容进行描述
Python自动化测试实战篇(1)

Python自动化测试实战篇(2)

Python自动化测试实战篇(3)

Python自动化测试实战篇(4)

Python自动化测试实战篇(5)

Python自动化测试实战篇(6)

Python自动化测试实战篇(7)
Python自动化测试实战篇(8)
Python自动化测试实战篇(9)
Python自动化测试实战篇(10)
Python自动化测试实战篇(11)

pytest第三方插件

先在E盘目录创建一个rep.txt文件
然后cmd进入E盘后
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第1张图片

通过pip3批量安装文件内的插件
pip3 install -r rep.txt
在这里插入图片描述

pytest-django
pytest-ordering
pytest-rerunfailures
pytest-assume
pytest-xdist
pytest-sugar
pytest-cov
pytest-picked
pytest-instafail
pytest-tldr
django-test-plus
pytest-html

1.pytest-django

需要在django进行测试的方法,pytest中也有相应的方法,只需要在django的根目录下创建pytest.ini文件
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第2张图片
再Terminal终端中输入pytest即可遍历所有的文件内的测试用例
如果要单独指定一个即用pytest testxxx.py以test开头的文件即可进行相应的单元测试。

Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第3张图片

2.pytest-ordering

设定执行顺序,可以通过ordering来设置执行顺序,从而来制定优先执行那一条测试用例

import pytest

@pytest.mark.run(order=2)
def test_1():
    print("测试1")

@pytest.mark.run(order=1)
def test_2():
    print("测试2")


if __name__ == '__main__':
    pytest.main(["-vs", "t1.py"])

可以看到修改后的测试用例执行顺序发生了改变,测试用例2优先执行

Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第4张图片

3.pytest-rerunfailures

失败重跑插件
用法:pytest test_3.py --reruns 2 --reruns-delay 2 -vs
失败后重新跑2次,间隔2秒

import pytest
import requests
url = "http://127.0.0.1:4523/m1/2459729-0-default/registersearch?user=admin&password=123456"

payload={}
headers = {
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Accept': '*/*',
   'Host': '127.0.0.1:4523',
   'Connection': 'keep-alive'
}

@pytest.fixture(autouse=True)
def login(request):
    response = requests.request("GET", url, headers=headers, data=payload)
    print(response.text)
    yield
    print("测试结束")
class TestFixture:
    def test_case001(self,login):
        res = requests.request("GET", url, headers=headers, data=login)
        assert res.status_code == 200
        print("接口连接成功")
        print(res.text)
def test_case002(request):
    print(request)
    print("测试用例2")


if __name__ == '__main__':
    pytest.main(["-vs", "test3.py"])

在终端使用
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第5张图片

4.pytest-assume

断言报错继续执行
当有断言出现错误时将不会继续执行,本插件就是为了让断言能够在出错的情况下继续执行
用法:pytest.assume(3 > 2)

import pytest

def test_assume():
    print("测试1")
    pytest.assume(1 < 2)
    print("测试2")
    pytest.assume(2 > 2)
    print("测试3")
    pytest.assume(3 > 2)
if __name__ == '__main__':
    pytest.main(["-vs", "t1.py"])

Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第6张图片

5.pytest-xdist

分布式测试
可调用多个CPU内核进行同时测试
用法:pytest -n 6 表示用6个cpu进行测试
pytest -n auto 表示系统自动检测cpu,会占用所有的cpu
pytest -n auto testxxx.py
终端输入pytest -n auto t1.py
可以看到调用了所有的cpu进行测试

Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第7张图片

6.pytest-cov

精准测试,可以显示那些已经测试过,那些还没有被测试过。
也可以用来检验代码覆盖率能够达到多少
用法:pytest --cov
在终端上执行
输出生成html报告
用法:pytest --cov --cov-report=html
然后双击index.html即可看到代码的覆盖率
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第8张图片
点开来看就可以看到未覆盖的代码。

Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第9张图片

7.pytest-picked

运行为未提交git的测试用例
用法:pytest --picked

pytest --picked=first首先运行被更改的文件

pytest --picked --mode=branch --parent-branch=main运行分支文件
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第10张图片

8.pytest-instafail

运行用例完成后直接实时打印错误
用法: pytest --instafail

Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第11张图片

9.pytest-tldr

简化错误信息,由于乱七八糟的错误信息让人看的眼花缭乱所以需要增加一个结构简单明了的错误信息观察
用法:pytest
关闭tldr:pytest -p no:tldr xxx.py
注意:如果你用了pytest-sugar你又装了tldr那么你的sugar的颜色将不会显示出来,为了更好的效果和体验可以把tldr卸载。

Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第12张图片

10.pytest-html

在终端指定pytest 输出方法 --html 地址 名称
后即可生成一个html格式的测试报告
pytest -vs --html ./pytest01/result.html
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第13张图片
更多pytest插件可以通过下面的网址获取。

11.pytest-random-order

随机执行测试用例,可以对用例进行打乱后进行随机测试。
用法:–random-order(默认随机测试)
将对以下代码进行随机测试

import pytest
import requests
url = "http://127.0.0.1:4523/m1/2459729-0-default/registersearch?user=admin&password=123456"

payload={}
headers = {
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Accept': '*/*',
   'Host': '127.0.0.1:4523',
   'Connection': 'keep-alive'
}

@pytest.fixture(autouse=True)
def login(request):
    response = requests.request("GET", url, headers=headers, data=payload)
    print(response.text)
    yield
    print("测试结束")
class TestFixture:
    def test_case001(self,login):
        res = requests.request("GET", url, headers=headers, data=login)
        assert res.status_code == 200
        print("接口连接成功")
        print(res.text)
def test_case002(request):
    print(request)
    print("测试用例2")
    assert 1 ==2
def test_case003(request):
    print(request)
    print("测试用例3")
    assert 1 !=2
def test_case004(request):
    print(request)
    print("测试用例4")
    assert 1 >2
def test_case005(request):
    print(request)
    print("测试用例5")
    assert 1 <2
def test_case006(request):
    print(request)
    print("测试用例6")
    assert 1+2==5
if __name__ == '__main__':
    pytest.main(["-vs", "test_3.py"])

终端执行:pytest -v --random-order test_3.py

可以看到随机打乱顺序进行用例测试
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第14张图片
终端使用global参数进行测试:pytest -v --random-order-bucket=global test_3.py
Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件_第15张图片
禁用随机插件方法:pytest -p no:random_order

pytest插件网址

在这里插入图片描述

你可能感兴趣的:(软件测试,python,pytest,数据库,插件,自动化测试,自动化测试实战,Pytest第三方插件)