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的特色功能,功能极为强大,具体使用可查看官方文档。

  • 相关阅读:
    LeetCode 1110. Delete Nodes And Return Forest
    LeetCode 473. Matchsticks to Square
    LeetCode 886. Possible Bipartition
    LeetCode 737. Sentence Similarity II
    LeetCode 734. Sentence Similarity
    LeetCode 491. Increasing Subsequences
    LeetCode 1020. Number of Enclaves
    LeetCode 531. Lonely Pixel I
    LeetCode 1091. Shortest Path in Binary Matrix
    LeetCode 590. N-ary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/lzyying/p/14940422.html
Copyright © 2011-2022 走看看