zoukankan      html  css  js  c++  java
  • pytest介绍

    pytest的使用

    环境安装

    pip  install  pytest

    一、pytest 对比 unittest

    1、unittest是python中的官方库,兼容性更好,更稳定,pytest在安装的时候,可能会出现和python版本的兼容问题。

    2、unittest编写用例一定要以类的形式去编写,而且必须要继承TestCase,

    3、pytest编写用例,既可以使用类的形式,又可以使用函数的形式,并且无需继承  

    4、unittest要自己加载用例到套件,再去执行,pytest更加智能,会自动查找用例

    5、pytest可以对用例打便签做分类管理,可以通过便签筛选用例,执行用例更加的灵活

    6、pytest有用例失败重运行机制,unittest没有。

    7、pytest支持的插件非常丰富,功能扩展性强。

    8、pytest用例执行的前置后置处理更加灵活

    9、执行顺序不一样,unittest是按照ASCLL码顺序执行,pytest是从上到下的顺序执行

    10、unittest有好多种断言方法,pytest只有assert

    11.unittest参数化需要结合ddt使用,pytest有自己的参数化方法 @pytest.mark.parametrize装饰器

    二、pytest 运行的方式

    方式一:命令行输入 pytest

    方式二:使用pycahrmpytest方式运行用例文件方式三:创建一个启动文件:

    方式三:创建一个启动文件:

      运行参数

        pytest.main()

    指定测试模块:  

      #  pytest  文件名

        pytest  test_mod.py

    指定测试目录:

      #  pytest  文件路径

        pytest  testcases

    指定测试用例执行:

      # 测试节点的组成:

        # py模块名::类名::函数名

          pytest test_dome.py::TestLogin::test_login_pass 

        #  pytest  py模块名::函数名

          pytest test_dome.py::test_demo2

    通过关键字表达式过滤执行:

      # 这条命令会匹配文件名、类名、方法名匹配表达式的用例

        pytest  -k  "MyClass  and  not  method"

    通过标记表达式执行

      #  这条命令会执行被装饰器  @pytest.mark.smoke  装饰的所有测试用例

        pytest  -m  smoke

    三、测试用例的规范

    1、发现用例的规则

      1、文件 和 *_test.py 开头或者结尾

      2Test开头的类 test开头的方法

      3、模块中test开头的函数注意点:

        1pytest 是以方法为单位发现用例的,你写不写测试类根本不重要。

        2、在那个目录下执行pytest,就在哪个目录下按照上述规则去查找

    2、自定义查找规则:pytest.ini

    [pytest]
    # 文件以test开头和test(check开头和check结尾)结尾都会当成测试用例
    python_files =
    test*.py
    *基础版1.py
    cheack_*.py
    test_*.py


    # 方法以test开头和test(check开头和check结尾)结尾都会当成测试用例
    python_functions =
    test*
    *test
    check*
    *check

    # 类以test开头和test(check开头和check结尾)结尾都会当成测试用例
    python_classes =
    Test*
    *Test
    Check*
    *Check

    四、用例打标记

    需求:有一部分老的用例,一部分新用例,我只想运行对用例进行标注,打标签

    1、注册标签

      mark 注册:创建 pytest.ini 文件

     

    五、用例执行顺序

     1unittest用例执行排序:

      根据ASCII码来排序

    2pytest用例执行的顺序:

      文件名称 ASCII 码排序

      文件内根据定义的的方法的先后顺序,从上到下执行

    六、断言

    使用关键字:assert断言

      assert  a  %  2  ==  0

    七、测试报告

    pip  install  pytest-html

    #  第一种:log  普通文本:  TextTestRunner

    --resultlog=report/demo.txt 相对路径

    #  第二种:xml, 生成  xml  文件

    --junitxml=report/demo.xml

    #  第三种:html  HTMLTestRunner,

    --html=report/demo.html

    #  第四种:allure :

    allure  是一个通用的测试报告的框架。python,  java,php,  ruby

    八、参数化(数据驱动)

    pytest写的用例,如何实现用例数据参数化? 使用pytest.parametrize

    @pytest.mark.parametrize("用例方法中接收的参数名",数据)

     

    九、fixture

    """
    fixture(scope="function") 根据方法运行
    fixture(scope="class") 根据类运行
    fixture(scope="module") 根据模块运行
    fixture(scope="package") 根据包运行
    fixture(scope="session") 根据会话对象运行
    fixture(autouse="True") autouse="True"会自动加到所有用例前后置

    定义:
    1.@pytest.fixture(scope="function")
    2.@pytest.fixture(scope="class")
    调用:
    1.在用例方法参数中,写上前后置的方法名
    2.在定义前后置方法的

    注意点:前后置方法可以统一放到congtest.py文件中(用例文件中直接使用,不需要导入)

    方式一:

    方式二:

    方式三:

      不用获取前置条件返回值:

      

      获取前置条件返回值:

    十、重运行机制

    安装插件:

    pip  install  pytest-rerunfailures

    重运行

    pytest  --reruns  3  --reruns-delay  5

  • 相关阅读:
    获取数据窗口的report对象 pb
    职业中的人与人。。。
    关于表格的设置
    今天学到的关于UI的一点东西
    给QQ发匿名消息
    这两天在改以前写的程序,很闷,记点流水账,:)
    我也要回家了,给大家道别
    时间过的好快啊,2月1号了,几个问题!
    开始新的一年的新生活..
    @dudu,临走问一下
  • 原文地址:https://www.cnblogs.com/pywen/p/14464818.html
Copyright © 2011-2022 走看看