python pytest框架的介绍与使用(超详细版)

1、pytest的安装
pip install pytest
在这里插入图片描述
2、查看pytest版本号
pytest -V
在这里插入图片描述
3、pytestkuk框架的简介在这里插入图片描述
4、pip install pytest-sugar(对运行过程进行界面美化)
pip install pytest-rerunfailures(重新运行出错的测试用例)
pip install pytest-xdist(多任务同时并发的执行测试用例)
pip install pytest-assume(添加断言,同一条测试用例每一条的断言都会反馈出来)
pip install pytest-html(生成美观的HTML测试报告)
在这里插入图片描述
5、测试用例的识别和运行
在这里插入图片描述
6、命令栏详细的使用介绍
在这里插入图片描述
pytest 文件名(运行该文件下以test命名的所有测试用例)
在这里插入图片描述
pytest -v -s 文件名(会输出详细信息)
在这里插入图片描述
pytest --maxfail=2文件名(当运行错误的用例达到设置的次数就停止,2可以改为其他数字)
在这里插入图片描述
7、pytest执行-失败重新运行
在这里插入图片描述
pytest -v -s --reruns 3 --reruns-delay 2 文件名(失败用例重新运行3次,间隔2秒)
在这里插入图片描述
8、pytest执行-多条断言有失败也都运行
在这里插入图片描述
pytest data1.py::TestDemo::test_four(运行效果如下图)
在这里插入图片描述
在这里插入图片描述
9、使用pycharm运行pytest
在这里插入图片描述
在这里插入图片描述
10、pytest框架结构
在这里插入图片描述
代码例子:

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @File : data2.py
# @Time : 2020/3/28 15:49 
# @Author : 李文良

import pytest

def setup_module():
    print("这是一个setup_module方法")

def teardown_module():
    print("这是一个teardown_module方法")

def setup_function():
    print("setup_function")

def teardown_function():
    print("teardown_function")

def test_login():
    print("这是一个外部的方法")

class TestDemo():

    def setup_class(self):
        print("setup_class")

    def setup_method(self):
        print("setup_method")

    def setup(self):
        print("setup")

    def teardown_class(self):
        print("teardown_class")

    def teardown_method(self):
        print("teardown_method")

    def teardown(self):
        print("teardown")

    def test_one(self):
        print("请开始执行 test_one 方法")
        x = "this"
        assert "t" in x
        # pytest.assume("t" in x)
        # pytest.assume(1 == 2)

    def test_two(self):
        print("请开始执行 test_two 方法")
        x = "this"
        assert "h" in x

    def test_three(self):
        print("请开始执行 test_three 方法")
        x = "this"
        assert "i" in x

    def test_four(self):
        print("请开始执行 test_four 方法")
        x = "this"
        assert "i" in x
        # pytest.assume("1" in x)
        # pytest.assume("1" not in x)
        # pytest.assume("s" in x)
        # pytest.assume("s" not in x)

    def test_five(self):
        print("请开始执行 test_five 方法")
        x = "this"
        assert "s" in x

if __name__ == "__main__":
    pytest.main("-v -s")
    # pytest.main(['-v','-s'])

执行结果:
在这里插入图片描述
11、pytest-fixture的用法
在这里插入图片描述
在这里插入图片描述
例子:
在这里插入图片描述
在这里插入图片描述
12、公共模块conftest的应用
在这里插入图片描述
在这里插入图片描述
13、yield的应用,用来进行数据回收
在这里插入图片描述
例子:scope="module"是可以修改的,默认function
在这里插入图片描述
14、不想原有测试方法有任何改动,或全部都自动实现自动应用,我们使用fixture中参数autouse=Ture实现
在这里插入图片描述
autouse=Ture默认是False,可以自己更改成Ture
在这里插入图片描述
在这里插入图片描述
15、fixture带参数传递
在这里插入图片描述
在这里插入图片描述
fixture固件函数需要传参,如果@pytest.fixture()里面没有传参,可以通过@pytest.mark.parametrize()给固件函数传参,即indirect=True。并且固件函数的返回值作为Test函数的参数,不写的话传参的函数是不会调用的
在这里插入图片描述
16、某些场景跳过个别用例执行,这时我们需要用到@pytest.mark.skip和@pytest.mark.xfail
在这里插入图片描述
在这里插入图片描述
17、对用例进行标记
在这里插入图片描述
例子:
在这里插入图片描述
去除标签警告:
在这里插入图片描述
18、多线程并行与分布式执行用例
在这里插入图片描述
19、生成htm报告
在这里插入图片描述

发布了4 篇原创文章 · 获赞 0 · 访问量 2955

猜你喜欢

转载自blog.csdn.net/weixin_44275820/article/details/105169871