zoukankan      html  css  js  c++  java
  • 编写pytest测试函数

    assert断言

      1.在判断异常后输出提示信息,方便检查原因
    def  f():
        return 4
    a = f()
    def test_01():
    
        assert a % 2 == 0, "判断 a 为偶数,当前 a 的值为:%s" % a
      注:一个函数中assert断言某一个执行失败后便不会执行该函数中后续断言,对于使用多个断言为assert只能在多个函数中分别执行
     

      2、预期异常

    def task():
        return (1/0)
    
    #  断言出现的异常是否为预期的,断言异常通常为断言异常的type和value值
    def test_zero_division_long():
        with pytest.raises(ZeroDivisionError) as excinfo:
            1/0 # 为判断异常的内容,可为某个函数task()
        # 断言异常类型 type
        assert excinfo.type == ZeroDivisionError
        # 断言异常 value 值
        assert "division by zero" in str(excinfo.value)

    二、测试函数标记marker

    marker: 自定义标记,可用于筛选冒烟测试等(发布必跑)

    一个函数可以有多个marker, 一个marker也可以标记多个函数

    带有相同标记的测试函数即使在不同文件中,也会被一起执行(执行目录下的不同文件)

    pytest -m "get and smoke"
    
    pytest -m "get and not smoke"

     三、跳过测试

    pytest除了使用自定义标记外,自身也内置了一些标记:skip,skipif,xfail

    对于标记为xfail,实际运行结果是xpass的测试,可在pytest配置(pytest.ini)中强制指定结果为fail

    【pytest】

    xfail_strict = true

    跳过:
    @pytest.mark.skip(reason='***')
    
    达到某个条件时跳过例:某个版本跳过
    @pytest.mark.skipif(***,reason='***')   
    
    #reason可写可不写
    
    pyest -v -rs(-v可看到哪些被执行,哪些被跳过, -rs可看到跳过的原因)
    
    预期失败
    @pytest.mark.xfail()
    执行后结果:
    xfaild:,预期会失败,实际也是失败了
    xpassed:预期失败,实际运行通过了

    四、运行测试子集

    1、运行单个目录tests下所有测试
    C:Usersviruser.v-desktopPycharmProjects	asks_proj>pytest ./tests
    
    
    2、单个测试文件、模块
    C:Usersviruser.v-desktopPycharmProjects	asks_proj>pytest ./tests/func
    C:Usersviruser.v-desktopPycharmProjects	asks_proj>pytest ./tests/func/test_add.py
    
    3、单个测试函数/类  ::符号+类名/函数名
    类下的某个函数: ::class::func 符号+类名+符号+函数名 C:Usersviruser.v
    -desktopPycharmProjects asks_proj>pytest ./tests/func/test_add.py::test_asdict

    4、用测试名划分集合
    -k,允许使用一个表达式(and、or、not)指定要运行的测试,该表达式可以匹配测试名或其子串
    例:运行函数名包含raise的: pytest -k raise -v
    例:运行函数名包含raise但不包含delete的: pytest -k "raise and not delete" -v

  • 相关阅读:
    python的ORM框架SQLAlchemy
    SQLAlchemy技术文档(中文版)-下
    SQLAlchemy技术文档(中文版)-上
    python的class的__str__和__repr__(转)
    虚拟化技术之KVM
    cobbler部署安装
    pxe+kickstart 无人值守安装CentOS7.1
    超详细saltstack安装部署及应用
    页面缓存
    db2 常用命令
  • 原文地址:https://www.cnblogs.com/byy521/p/15141207.html
Copyright © 2011-2022 走看看