zoukankan      html  css  js  c++  java
  • Pytest学习

    pytest简介

    pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。

    使用介绍

    编写规则

    • 测试函数以test_开头
    • 测试类以Test开头,并且不能带有 init 方法
    • 测试文件以test_开头(以_test结尾也可以)
    • 断言使用基本的assert即可

    pycharm 配置pytest

    更改工程设置默认的运行器:
    file->Setting->Tools->Python Integrated Tools->项目名称->Testing->Default test runner->选择pytest

    fixture的Scope参数

    scope参数有四种,分别是'session'、'module'、'class'、'function',默认为function。
    一个.py文件为一个module,一个session中可以有多个module,若是多个.py文件共用一个功能时,可以使用session参数。

    • session:每个session只运行一次
    • module:每个module的所有test只运行一次
    • class:每个class的所有test只运行一次
    • function:每个test都运行,Scope的默认值
    #写于conftest.py中
    @pytest.fixture(scope="session")
    def first():
        print("scope为session级别多个.py模块只运行一次")
        a = "ad"
        return a
    def test_s(first):
        assert first == "ad"
    
    @pytest.fixture(scope="module")
    def first():
        print("scope为module级别当前.py模块只运行一次")
        a = "amdin"
        return a
    def test_m(first):
        assert first == "ad"
    
    @pytest.fixture(scope="class")
    def first():
        print("scope为class级别只运行一次")
        a = "admin"
        return a
    def test_c(self,first):
        assert first == "admin"
    
    @pytest.fixture(scope="function")
    def first():
        b = "123456"
        return b
    def test_f(first):
        assert first == "654321"
    
    

    setup和teardown

    setup:在测试函数或测试类之前执行,完成准备工作,例如数据库链接、测试数据等
    teardown:在测试函数或测试类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等
    备注:也可以在fixture函数中通过yield实现setup和teardown功能

    • 模块级(setup_module/teardown_module)开始于模块始末,全局,优先级最高
    • 类级(setup_class/teardown_class)只在类中前后运行一次(在类中定义)
    • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中定义)
    • 方法级(setup_method/teardown_method)开始于方法始末(在类中定义)
    def setup_module():
        print("setup_module:整个.py模块执行前执行一次")
        print("比如:所有用例开始前只打开一次浏览器")
    def teardown_module():
        print("teardown_module:整个.py模块执行后执行一次")
        print("比如:所有用例结束只最后关闭浏览器")
    
    def setup_class(self):
        print("setup_class:类中的所有用例执行前执行一次")
    def teardown_class(self):
        print("teardown_class:类中的所有用例结束后执行一次")
    
    def setup_function():
        print("setup_function:不在类中的每个用例开始前执行")
    def teardown_function():
        print("teardown_function:不在类中的每个用例结束后执行")
    
    def setup_method(self):
        print("setup_method:  类中的每个用例开始前执行")
    def teardown_method(self):
        print("teardown_method:  类中的每个用例结束后执行")
    
    
    

    assert断言

    A=11
    a='hello'
    b= 'he'
    大小断言:assert A == != <= >= 22
    包含断言:assert b in a;   assert b not in a
    是否       :assert a is True;    assert  a is not true;   assert a is false
    
    

    confest.py文件

    pytest的本地测试配置文件,可以实现数据共享,也可以用于导入外部插件。作用于所在的目录及子目录。

    注意:

    1. confest.py与运行的用例要在同一个package(可以理解为同一个文件夹)下,并且有init.py文件,用于被pytest自动识别。
    2. 名字固定

    可以用来存放 fixture文件,供多个.py文件使用

    Console参数

  • 相关阅读:
    MT9v024总结
    常用芯片电路知识汇总
    octopress 如何添加youku视频和本地视频(octopress how to add a youku video or a local video)
    MT9M021/MT9M031总结
    TC358746AXBG/748XBG 桥接器说明
    mipi 调试经验
    1‘b0 什么意思
    MIPI总结和MIPI规格说明书
    octopress添加回到顶部按钮
    CentOS软件安装目录查找
  • 原文地址:https://www.cnblogs.com/qev211/p/11928499.html
Copyright © 2011-2022 走看看