zoukankan      html  css  js  c++  java
  • pytest-1-简单入门

    前言

    pytest是一个非常成熟的全功能的Python测试框架,适合从简单的单元到复杂的功能测试,主要特点有以下几点:

    • 简单灵活,容易上手;
    • 支持参数化;
    • 能够支持简单的单元测试;
    • 标记测试功能与属性
    • 复杂的功能测试,比如可以做selenium等自动化测试、接口自动化测试(pytest+requests);
    • pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)等;
    • Skip和xfail:处理不成功的测试用例;
    • 可以很好的和jenkins集成;
    • 通过xdist插件分发测试到多个CPU

    一、简介

    1、环境搭建推荐版本匹配:pip install pytest==3.6.3

    • Python3.6.x + pytest 3.6.3
    • Python3.7.x + pytest 4.0.2

    2、查看版本:pytest --version

    C:UsersAdministrator>pytest --version
    This is pytest version 3、6、3, imported from d:path_pythonlibsite-packagespytest、py

    3、pytest 命名规则:

    • 文件名以test_*、py 或 *_test、py
    • 类已 Test* 开头
    • 函数/方法以 test_* 开头

    4、pytest 直接写用例,写完 cmd 运行,不需要导入其他模块。

    G:python_studystudypytest_demostudy>pytest -s test_demo1.py
    ================================================= test session starts =================================================
    platform win32 -- Python 3.6.5, pytest-3.6.3, py-1.8.0, pluggy-0.6.0
    rootdir: G:python_studystudypytest_demostudy, inifile:
    collected 2 items
    test_demo1.py 我是用例:a . 我是用例:b .
    ============================================== 2 passed in 0.02 seconds ===============================================

    二、pytest 命令行参数介绍

    1、运行规则:pytest py文件路径

    C:UsersAdministrator>pytest G:python_studystudypytest_demostudy	est_demo.py
    ============================= test session starts =============================
    platform win32 -- Python 3.6.5, pytest-3.6.3, py-1.8.0, pluggy-0.6.0
    rootdir: C:UsersAdministrator, inifile:
    collected 4 items
    
    test_demo.py ....                                                        [100%]
    
    ========================== 4 passed in 0.03 seconds ===========================

    2、显示打印信息(不然不会看到打印内容):pytest -s xxx

    G:python_studystudypytest_demostudy>pytest -s test_demo1.py
    ================================================= test session starts =================================================
    platform win32 -- Python 3.6.5, pytest-3.6.3, py-1.8.0, pluggy-0.6.0
    rootdir: G:python_studystudypytest_demostudy, inifile:
    collected 2 items
    
    test_demo1.py
    我是用例:a
    .
    我是用例:b
    .
    
    ============================================== 2 passed in 0.02 seconds ===============================================

    3、显示详细信息:pytest -v xxx

    G:python_studystudypytest_demostudy>pytest test_demo1.py -v
    ============================= test session starts =============================
    platform win32 -- Python 3.6.5, pytest-3.6.3, py-1.8.0, pluggy-0.6.0 -- d:path_pythonpython.exe
    cachedir: .pytest_cache
    rootdir: G:python_studystudypytest_demostudy, inifile:
    collected 2 items
    
    test_demo1.py::Test_api::test_a PASSED                                   [ 50%]
    test_demo1.py::Test_api::test_b PASSED                                   [100%]
    
    ========================== 2 passed in 0.02 seconds ===========================

    4、简洁显示信息:pytest -q xxx

    G:python_studystudypytest_demostudy>pytest test_demo1.py -q
    ..                                                                       [100%]
    2 passed in 0.02 seconds

    5、运行指定用例:pytest -k case_name    (case_name可类可函数,模糊匹配关键字),如下匹配 demo

    G:python_studystudypytest_demostudy>pytest -k demo -v
    ============================= test session starts =============================
    platform win32 -- Python 3.6.5, pytest-3.6.3, py-1.8.0, pluggy-0.6.0 -- d:path_pythonpython.exe
    cachedir: .pytest_cache
    rootdir: G:python_studystudypytest_demostudy, inifile:
    collected 11 items / 5 deselected
    
    test_demo.py::test_ab PASSED                                             [ 16%]
    test_demo.py::test_aba PASSED                                            [ 33%]
    test_demo.py::Test_api::test_aa PASSED                                   [ 50%]
    test_demo.py::Test_api::test_b PASSED                                    [ 66%]
    test_demo1.py::Test_api::test_a PASSED                                   [ 83%]
    test_demo1.py::Test_api::test_b PASSED                                   [100%]
    
    =================== 6 passed, 5 deselected in 0.06 seconds ====================

    6、命令行参数不分顺序,还有其他命令行参数,不一一细说:

    • 运行类用例且不运行类某个用例:pytest -v -k "Test_api1 and not test_a"
    • 失败停止测试:pytest -x
    • 指定个数失败后停止测试:pytest --maxfail=2
    • 运行上一次失败用例(或没失败的):pytest --last-failed
    • 等等

    7、pycharm 设置 pytest 运行用例:

    更多请查看 pytest -h 或者找度娘,我们一般用以上的参数够日常使用了。欢迎来QQ交流群:482713805

  • 相关阅读:
    呼叫中心获取sip数据报文
    【代码总结】GD库中简单的验证码
    【代码学习】PHP中GD库的使用
    【漏洞详解】文件包含漏洞
    讲两道常考的阶乘算法题
    如何高效解决接雨水问题
    如何判定括号合法性
    二分查找高效判定子序列
    一道数组去重的算法题把东哥整不会了
    如何高效寻找素数
  • 原文地址:https://www.cnblogs.com/gsxl/p/12051272.html
Copyright © 2011-2022 走看看