• pytest基础


    参考 https://www.jianshu.com/nb/49366888

    介绍

    • pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行);

    • 测试用例的skip和xfail处理;

    编写规则

    • 测试文件以test_开头(以_test结尾也可以)

    • 测试类以Test开头,并且不能带有 init 方法

    • 测试函数以test_开头

    • 断言使用基本的assert即可

    1)用例的前置和后置:

    1、Pytest提供了模块级、函数级、类级、方法级的setup/teardown

    • 模块级setup_module/teardown_module:开始于模块始末,全局。

    • 类级setup_class/teardown_class:只在类中前后运行一次(类中)。

    • 函数级setup_function/teardow_function:只对函数用例生效(不在类中)。

    • 方法级setup_method/teardown_method:开始于方法始末(在类中)。

    • 类里面的setup/teardown:运行在调用方法的前后。

    2、函数前加@pytest.fixtures()装饰器,在测试用例中使用Fixture函数。可作用于functionmoduleclasssession中。fixture相对于setup/teardown来说的优势,如下:

    • 命名方式灵活,不局限于setup/teardown

    • conftest.py配置里可以实现数共享,无需import就可自动找到配置数据,可供多个.py文件调用。

    • scope="module",可以实现多个.py文件跨文件共享前置。

    • scope="session",可以实现多个.py文件跨文件使用一个session来完成用例。

    • 使用yeild返回,相当于teardown的作用。

    2)参数化:

    • 直接使用@pytest.mark.parametrize装饰器。

    3)断言:

    • 直接使用Python语言内置的assert表达式。

    4)用例分类执行:

    • 可以通过@pytest.mark来标记测试用例,执行命令前加上参数"-m",即可运行标记的用例。

    5)失败重运行:

    • 支持用例执行失败重跑,提供了pytest-rerunfailures插件。

    6)报告:

    • 使用pytest-HTMLallure插件生成测试报告。

    常用插件

    • pytest-selenium:集成Selenium。

    • pytest-html:生成html格式的自动化测试报告。

    • pytest-rerunfailures:失败case重复执行。

    • pytest-xdist:测试用例分布式执行,也可以说是多CPU分发。

    • pytest-ordering:用于改变测试用例的执行顺序。

    • allure-pytest:用于生成美观的测试报告。

    执行用例

    用例示例

    import pytest

    def func(a):
       return a + 1

    def test_func():
       assert func(2) == 2

    if __name__=="__main__":
       # 注意格式,main参数是一个列表
       pytest.main(["test_sample.py"])

    命令行运行

    进入命令行

    py.test               # 运行所有用例
    py.test test_mod.py   # 运行指定文件的用例
    py.test somepath      # 运行指定文件夹下的用例

    执行用例并生成测试报告

    py.test --resultlog=path    # html测试报告
    py.test --junitxml=path # xml测试报告

    执行用例的参数:

    • -v:打印用例执行的详细过程。

    • -q:只显示整体测试结果。(显示简略过程)

    • -s:用于显示输出调试信息,包括测试函数中print()函数输出的信息。

    • -x--exitfirst:在第一个错误或测试失败时立即退出。

    • --reruns NUM:失败用例重跑。 需要安装 pytest-rerunfailures:失败case重复执行

    • -k args:根据测试用例的名字,搜索匹配字符串,来执行匹配上的测试用例。

    在PyCharm中以Pytest的方式运行测试用例

    步骤1:

    点击File —> Settings —> Tools —> Python Integrated Tools —> Testing

    将default test runner由【unittests】变为【pytest】,apply应用一下。

    img

    步骤2:

    在PyCharm的Edit configurations...中配置以pytest方式运行测试用例。

    点击PyCharm右上角的Edit configurations...

    Edit configurations...中点击左上角的+号标志,添加Python tests —> pytest

    img

    步骤3:

    然后选择target运行的测试文件,可以选择module(文件名),比如test_01.py,也可以选择文件路径scripts path

    img

    设置完成后点击apply应用。最后执行用例

    pytest.main()函数

    • 运行所有测试用例:pytest.main()

      也可以加上参数:pytest.main(['-vs'])

      提示:注意是所用测试用例,包括不同文件上的测试用例,都会执行。

    • 执行指定文件的测试用例:

      pytest.main(['-s','-v','test_a.py'])

      也可以pytest.main(['-vs','test_a.py'])

    • 执行指定包下的所有测试用例:

      pytest.main(['-vs','./interface_testcase'])

    提示:main函数的参数是一个列表数据类型。

    Pytest Exit Code说明

    • Exit Code 0:所有用例执行完毕,全部通过。

    • Exit Code 1:所有用例执行完毕,存在Failed的测试用例。

    • Exit Code 2:用户中断测试执行。

    • Exit Code 3:测试执行过程中发生了内部错误。

    • Exit Code 4:Pytest命令行使用错误。

    • Exit Code 5:未采集到可用测试用例文件。

    Exit Code是公共API的一部分,可以使用以下方法直接导入和访问:

    也就是在编写测试用例的时候,可以通过枚举的方式获取Exit Code进行判断或者断言。

    步骤1:导入

    from pytest import ExitCode

    步骤2:调用(都是常量)

    pytest.ExitCode.OK

     

  • 相关阅读:
    json python
    mysql存储json
    C#中使用Newtonsoft.Json序列化和反序列化自定义类对象
    IDEA 中的.iml文件和.idea文件夹 ( 隐藏方式 )
    C#中Newtonsoft.Json.dll 的使用 序列化 JsonConvert.SerializeObject(obj) Object 反序列 obji = JsonConvert.DeserializeObject<Object>(json数据);
    [python] JSON
    编程经验:分组条件查询having
    软件汉化:OllyDBG 入门之三简介及常用命令
    读书札记: [转] 失去目标的时候进来看看!
    软件汉化:OllyDBG 入门之二破解预备知识(转)
  • 原文地址:https://www.cnblogs.com/yjh1995/p/14753225.html
Copyright © 2020-2023  润新知