zoukankan      html  css  js  c++  java
  • Pytest使用介绍

    之前做接口自动化测试接触的都是python+unittest+ requests+HTMLTestRunner,现在公司用的是pytest,趁周末的时间先整体熟悉下~
     
    一、概述
    pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:
    • 1、简单灵活,容易上手,文档丰富;
    • 2、支持参数化,可以细粒度地控制要测试的测试用例;
    • 3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);
    • 4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;
    • 5、测试用例的skip和xfail处理;
    • 6、可以很好的和CI工具结合,例如jenkins
     
    二、安装
    1、安装:
    pip install pytest
    2、验证安装:
    pytest --version
     
    三、简单使用说明
    1、pytest框架约束
    所有的单测文件名都需要满足test_*.py格式或*_test.py格式。
    在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
    在单测类中,可以包含一个或多个test_开头的函数
    在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
     
    2、简单示例
    下面是最简单的一个示例
    下面我们以这个最简单的例子来举例
     
    3、pytest运行方式
    (1)测试函数模式,如上图:
    pytest.main(['test_demo.py'])
    (2)命令行模式:pytest 文件路径/测试文件名
    例如:
    pytest pytest_demo.py
    4、控制测试用例执行
    (1)在第N个用例执行失败后,结束测试执行
    pytest -x  pytest_demo.py                  # 第01次失败,就停止测试
    pytest --maxfail=2  pytest_demo.py         # 出现2个失败就终止测试
    (2)指定测试模块
    pytest pytest_demo.py 
    (3)指定测试目录
    pytest pytest_test/
    (4)通过关键字表达式过滤执行
    pytest -k "not 3"  #执行的时候会跳过test_3,只执行test_1和test_2
    (5)通过node id指定测试用例
    node id由模块名、分隔符、类名、方法名、参数构成,举例:
    运行模块中的指定用例: 
    pytest test_demo.py::test_1 #只运行test_1
    因为上面的例子上没有类,如果存在类的话指定的方法是一致的
    (6)通过标记表达式执行
    pytest -m slow # 这条命令会执行被装饰器 @pytest.mark.slow 装饰的所有测试用例
    (7)通过包执行测试
    pytest --pyargs pkg.testing # 这条命令会自动导入包 pkg.testing,并使用该包所在的目录,执行下面的用例。
     
    5、多进程运行cases
    如果cases量比较大的话,运行的时间可能会很长,这时候就需要多进程来运行
    安装pytest-xdist:
    pip install -U pytest-xdist
    运行模式:
    pytest test_demo.py -n NUM # 其中NUM填写并发的进程数。
     
    6、重试运行cases
    在做接口测试后,503或者网络波动,可能导致case运行失败,此时可以通过重试运行case的方式来解决
    安装pytest-rerunfailures:
    pip install -U pytest-rerunfailures
    运行
     pytest test_se.py --reruns NUM # 其中NUM填写重试的次数
     
    7、如何显示print内容
    在运行脚本时,我们会通过print来调试或者打印一些内容,加上-s就可以了。
    pytest test_demo.py -s
    另外,pytest的多种运行模式是可以叠加执行的,比如说,你想同时运行个进程,又想打印出print的内容。可以用:
    pytest test_demo.py -s -n 3
     
     
     
     

     

  • 相关阅读:
    python的logging模块
    python的random模块
    python3中time模块的用法及说明
    浅谈python模块的导入操作
    python3中,os.path模块下常用的用法总结
    OS模块的常用内置方法
    认识python中的set集合及其用法
    初识Python装饰器
    CentOS的软件包的管理之rpm和yum
    python中的函数对象与闭包函数
  • 原文地址:https://www.cnblogs.com/daydayup-lin/p/13458960.html
Copyright © 2011-2022 走看看