• python-pytest



    pytest

    一、介绍

      pytest是基于python的测试框架。特色:

    1. 按照约定自动收集用例
    2. 作用于测试对象的多种标记功能
    3. 自定义fixture
    4. 多种执行方式
    5. 可视化测试报告
    6. 控制台打印执行记录

      两个文件,conftest.py 和 pytest.ini

    1. conftest.py文件,conftest.py中定义的fixture,不用导入测试模块,可以直接在测试模块中以str或函数方法参数使用 
    2. pytest.ini文件,pytest执行方案配置。常用:addopts,markers,python_function等。

    二、自动收集用例

    1.依据

    1. 目录:默认为执行命令所在目录,可指定
    2. 关键字:默认为全部,可指定
    3. mark:默认为全部,可指定

    2.命名约定

      测试模块名test_*.py,测试类名class Test*,测试函数名def test_*(),测试方法名def test_*(self)

    3.自定义规则

    1. 指定目录:pytest /dir
    2. 指定文件:pytest /dir/test_case.py
    3. 指定类:pytest /dir/test_case.py::TestCase
    4. 指定方法:pytest /dir/test_case.py::TestCase::test_case
    5. 指定函数:pytest /dir/test_case.py::test_case
    6. 指定关键字:pytest -k "<express>"
    7. 指定mark:pytest -m "<express>"

    二、mark

    1.mark.usefixture

      为测试对象指定一个fixture,这是调用自定义fixture的一种方式。

      scope参数限定作用对象的等级。默认为函数方法级。可指定

    2.mark.parametrize

      为测试函数方法对象执行parametrize可以实现参数化

      第一个参数为字符串,定义测试用例中引用参数的名称;

      第二个参数为列表嵌套元组,元组内的数据顺序和第一个参数顺序同步;

      ids参数为列表,定义用例名称,顺序和第二个参数元组的顺序同步。

    3.其它

      xfail,skip,自定义mark

    三、自定义fixture功能

    1.前置处理和后置处理的fixture实现

      在def中包含yield实现。yield前的语句为前置处理操作,yield后的语句为后置处理操作。分别在作用对象执行前后执行。

    2.fixture配置

      scope参数:定义fixture作用对象的等级,默认为函数方法级。可指定等级有:session,module,class,function

      autoure参数:定义fixture是否自动装配给测试对象。

    3.带参数的fixture实现参数化

      fixture装饰的函数可以定义参数,通过这个参数接收数据,经过fixture功能处理后,返回需要的测试数据对象。参数来源有两种途径:

    1. fixture的param参数传参。
    2. 作用对象的parametrise中传参。

    4.fixture的调用

      自定义的fixture功能需要装配到测试对象上。通常有三种方式。

    1. 定义fixture时,指定autoure参数,自动配置给所有测试对象;
    2. 测试对象用mark.usefixture指定装配fixture功能;
    3. 测试对象函数方法定义时,将需要装配的fixture定义到函数方法的参数中。会自动执行。(如果装配的fixture有参数,则还需要传入数据)

    四、多种执行方式

      如何执行?给pytest配置执行方案。①pytest.ini中配置执行pytest命令默认带的配置参数数据;②pytest.main([**args]),使用main方法指定参数数据;③命令行直接指定参数数据;④os.system("command"),使用system方法执行命令行命令。

      常用的几种执行方案

    1. 执行全部:pytest
    2. 执行smoke test:pytest -m "smoke"
    3. 执行单个模块:pytest.main()
    4. 控制台打印配置:-s,-q,-v
    5. 测试结果配置:--alluredir ./result(需要安装allure,并执行allure generate ./result -o ./result.report --clean命令生成index.html报告文件)

      执行过程中控制台会打印执行记录以及是否通过的结果

      执行过程中没有抛出except,则视为pass。否则为fail并打印except的记录,如assert失败抛出异常,如数据驱动未找到数据文件(尽量避免脚本bug导致执行fail)

  • 相关阅读:
    47-python基础-python3-字符串-常用字符串方法(五)-rjust()-ljust()-center()
    46-python基础-python3-字符串-常用字符串方法(四)-join()-split()
    45-python基础-python3-字符串-常用字符串方法(三)-startswith()-endswith()
    44-python基础-python3-字符串-常用字符串方法(二)-isalpha()-isalnum()-isdigit()-isspace()-istitle()
    43-python基础-python3-字符串-常用字符串方法(一)-upper()-lower()-isupper()-islower()
    42-python基础-python3-字符串-原始字符串
    40-python基础-python3-字典常用方法-setdefault()
    39-python基础-python3-字典常用方法-get()
    38-python基础-python3-检查字典中是否存在键或值
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/bonus_scene/p/13629896.html
Copyright © 2020-2023  润新知