• 吐血整理,最全Pytest自动化测试框架快速上手(超详细)



    前言

    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;

    1、安装

    pip install pytest
    
    • 1

    2、验证安装

    pytest --version # 会展示当前已安装版本
    
    • 1

    3、pytest文档

    官方文档:https://docs.pytest.org/en/latest/contents.html

    在pytest框架中,有如下约束:

    所有的单测文件名都需要满足test_.py格式或_test.py格式。

    在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)

    在单测类中,可以包含一个或多个test_开头的函数。

    此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。

    4、创建测试用例

    创建test_开头的文件,测试文件以 test_xx.py 命名需要以 test_开头(或_test 结尾)

    若是新建类,测试类需要以 Test_开头,并且不能带有 init 方法(Test开头的类,这个类也叫做测试套件,类下面的是函数才是测试用例)

    测试用例(方法)需要以 test_开头

    import pytest  #导入pytest模块
    
    
    def test_beifan():  #测试用例
        pass
        
    class TestBaili:  #测试套件
        def test_a(self): #测试用例,第一个测试方法
            pass
            
        def test_b(self):  #测试用例,第二个测试方法
            pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在用例中使用断言

    Pytest 最常用的断言一般有以下五种:

    assert xx:判断 xx 为真
    assert not xx:判断 xx 不为真
    assert a in b:判断 b 包含 a
    assert a == b:判断 a 等于 b
    assert a !=b:判断 a 不等于 b
    
    • 1
    • 2
    • 3
    • 4
    • 5

    添加断言在对应的方法里面,做判断测试用例结果是否满足预期,示例如下:

    在这里插入图片描述

    优化断言

    如果想要在失败的时候看到更详细的信息,可以在断言上添加说明,示例如下:
    执行结果如下图,可以看到失败时断言的说明信息:

    在这里插入图片描述

    5、执行测试用例

    使用命令行执行
    cmd 窗口,然后执行 pytest 文件路径/测试文件名例如 pytest ./test_tt.py

    如果当前路径已经是放测试用例文件的文件夹下,想要测试文件,则直接可以输入pytest 测试文件名 即可:

    在这里插入图片描述

    如果只输入 pytest,则会默认执行当前文件夹下所有以 test_开头(或_test 结尾)的文件。

    执行指定文件指定方法

    命令行编写方式
    pytest路径/文件名::类名::方法名例如

    在这里插入图片描述

    带参数执行
    常用的 pytest 带参数执行:列举几种,其余扩展可以自行百度

    Pytest -v 输出用例更加详细的执行信息,比如用例所在文件和用例名称

    pytest -k 执行用例中包含‘关键字’的用例

    pytest -s 输出用例中的调试信息,比如 print 打印信息,如果不加参数则不输出待执行的用例

    pytest -m执行‘标记’的内容,执行特定的测试用例,执行有相同标记的测试用例,添加标记的方法如下

    pytest -x执行失败则停止执行,后面的用例不会被执行

    pytest --maxfail=n执行失败 n 次之后停止执行,n 是执行失败的次数

    pytest --count=n 执行用例 n 次,n=2 就是执行两次

    pytest --lf (last failed)重新运行上次失败的用例,若没有失败的会全部跑

    pytest --ff (failed first)重新运行所有用例,但首先运行上次失败的用例

    6、读懂测试结果

    .代表一个测试用例通过,…代表两个测试用例通过,以此类推;
    s,即Skip,代表用例跳过执行;
    F,即Failure,一般是断言发生错误;
    E,即Error,一般是用例执行过程中报错。
    
    • 1
    • 2
    • 3
    • 4

    7、pytest的fixures

    fixtures(夹具)可以在测试用例执行之前,执行之后,自动执行一些代码

    在不同用例中,相同的代码进行复用

    在不同用例中,实现依赖管理

    1)创建fixtures
    pytest的夹具,本质是“函数”,加上fixtures装饰器。

    夹具=函数+fixtures装饰器
    创建一个conftest.py文件

    import pytest  #导入pytest模块
    
    
    def test_beifan():  #测试用例
        pass
        
    class TestBaili:  #测试套件
        def test_a(self,driver): #测试用例,第一个测试方法
            pass
            
        def test_b(self,driver):  #测试用例,第二个测试方法
            pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这样就会打开自动两次浏览器了。

    有个要求:两个测试用例,只启动一次浏览器

    100个测试用例,但是只启动1次浏览器

    2)fixture的范围
    创建夹具,可以指定夹具的共享范围,在共享范围内的用例,会共享同一个夹具。

    pytest的夹具共享范围有5个:

    function(默认,最小,自己和自己共享,不和其他用例共享)
    class(同一个类中)
    module(文件)
    package(文件夹)
    session(会话,最大,全局)

    @pytest.fixture(scope='function')
    def driver():
        d = webdriver.Chrome()
        d.get("http://101.34.221.219:8010/")  # 控制浏览器,访问百度
        d.quit()
        return d
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在fixture这个装饰器中传递一个范围参数,用来说明用例在什么范围中是相互共享的。

    下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

    一、Python编程入门到精通

    请添加图片描述

    二、接口自动化项目实战

    请添加图片描述

    三、Web自动化项目实战

    请添加图片描述

    四、App自动化项目实战

    请添加图片描述

    五、一线大厂简历

    请添加图片描述

    六、测试开发DevOps体系

    请添加图片描述

    七、常用自动化测试工具

    请添加图片描述

    八、JMeter性能测试

    请添加图片描述

    九、总结(尾部小惊喜)

    拥抱每一个挑战,超越自我,勇敢向前。不要畏惧失败,它是成功的跳板;不要停歇奋斗,只有坚持才能收获辉煌。相信自己,你就是改变世界的力量。

    生活的旅途永远不会一帆风顺,但只要你充满信心、坚持努力,就一定能够越过重重难关,最终携手迎接胜利的曙光。相信自己,你的努力没有白费,未来的道路由你开创。

    只有在面对困难和挑战的时候,才能真正展现出你内在的潜力和实力。坚持不懈,百折不挠,你一定能够最终实现自己的梦想。相信自己,永不放弃。

  • 相关阅读:
    142. 环形链表 II
    Python标准库(Python自带的模块和包)
    第六课 ceph基础学习-Ceph的管理监控和故障排查
    揭晓:一条SQL语句的执行过程是怎么样的?
    ubuntu 安装redis详细教程
    【Java】异常处理(一)
    vue3前端开发系列 - electron开发桌面程序(2023-10月最新版)
    # ODS及DWD层自动化构建##, 220731,
    通用ORM的设计与实现
    C语言之判断与循环语句知识点总结
  • 原文地址:https://blog.csdn.net/csdnchengxi/article/details/133640218