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
     
     
     
     

     

  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/daydayup-lin/p/13458960.html
Copyright © 2011-2022 走看看