zoukankan      html  css  js  c++  java
  • pytest入门与基础用法

     

    简介:

    pytest是python的一个单元测试框架,类似python自带的unittest测试框架,但是比unittest框架使用起来更简洁,效率更高。
     
    特点:
    • 命令行工具,容易上手,入门简单,编写用例简单,可读性强
    • 可以直接采用assert进行断言,不需要记忆self.assertEqual()等
    • 支持参数化(pytest.mark.parametrize)
    • 易于持续集成,适用于接口自动和UI自动化
    • 扩展性强,支持扩展第三方插件
    • 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败(xfail)
    • 支持重复执行(rerun)失败的case
    • 可以运行nose, unittest编写的测试case
    • 可生成html报告(pytest-html或allure)
    • 可支持执行部分用例(marker)

    安装:

    #前提:已安装pip,可通过以下命令判断是否安装
    pip --version
    #安装
    pip install -U pytest
    #查看pytest版本
    pip show pytest
     

    基础用法:

    1、用例设计规则:

    测试文件的文件名必须以"test_"开头,或者以"_test"结尾
    测试类命名必须以"Test"开头
    测试函数名必须以"test"开头
    测试类里面不能使用"__init__"方法
     

    2、断言方法:

    基本的assert
     
    简单示例:

    3、pytest运行规则:

    1、直接pytest,查找当前目录及其子目录下所有符合规则的文件,类,方法,函数并全部执行;
    2、pytest 文件名.py,单独执行某个python文件
    3、pytest 文件名.py::类名,单独执行某个文件中的某个类
    4、pytest 文件名.py::类名::方法名,单独执行类中的某个方法
     
    注意:
    pytest用例执行是乱序的,如需指定用例的顺序,可使用pytest-ordering插件,在测试用例的方法前加上装饰器@pytest.mark.run(order=[num]) ,将按照num 值的大小顺序从小到大来执行

     

    4、运行参数:

    可使用pytest --help查看帮助文档

     个人常用到的参数:

     5、参数化:

    使用@pytest.mark.parametrize() 进行参数化

    6、框架结构:

    在pytest中,可与unittest一样,在执行用例前后执行 setup,teardown 来增加用例的前置和后置条件
    pytest的setup,teardown按照用例运行级别可分为以下几类:
    模块级(setup_module/teardown_module)在模块始末调用
    函数级(setup_function/teardown_function)在函数始末调用(在类外部)
    类级(setup_class/teardown_class)在类始末调用(在类中)
    方法级(setup_method/teardown_methond)在方法始末调用(在类中)
    方法级(setup/teardown)在方法始末调用(在类中)

    7、fixture:

    (1)fixture作为函数参数:
    例如测试用例1需要登录,测试用例2不需要,测试用例3需要,则可用fixture作为函数参数来控制:
    (2)fixture指定范围共享:
    除了用setup,teardown控制用例的前置后置外,还可用fixture功能自定义用例的前置后置
    根据作用范围大小划分:session> module> class> function,具体作用范围如下:
    function 函数或者方法级别都会被调用
    class 类级别调用一次
    module 模块级别调用一次,即一个文件调用一次
    session 是多个文件调用一次(可以跨.py文件调用,每个.py文件就是module)
     
    使用方法:
    fixture函数前增加@pytest.fixture(scope="module")
    测试用例前增加@pytest.mark.usefixtures("fixture函数名")
     
    注意:
    1、fixture函数可以放在单独的测试文件里,不与测试用例同一个文件
    2、如果希望多个测试文件共享fixture,可以放在某个公共目录下新建一个conftest文件,将fixture放在里面
    3、测试用例函数的参数列表包含fixture函数名字,pytest就可以检测到了,检测顺序:优先搜索该测试用例所在的文件,然后搜索conftest.py,并在测试函数运行之前执行该fixture函数。
     
    注:fixture功能是pytest的特色功能,功能极为强大,具体使用可查看官方文档。

  • 相关阅读:
    openvswitch 监听端口变化
    Python set() 函数
    openstack-neutron-OVS agent分析
    openvswitch ovs-appctl 使用
    python setup.py install 报错【Project namexxx was given, but was not able to be found.】
    openstack nova 创建虚机流程
    Linux kernel 模块 hello 测试
    openvswitch 流表操作
    软件测试开发之第一篇(测试文档)
    Java工具之Myeclipse程序调试
  • 原文地址:https://www.cnblogs.com/lzyying/p/14940422.html
Copyright © 2011-2022 走看看