zoukankan      html  css  js  c++  java
  • python pytest进阶之conftest.py详解(转载)

    1.前言
    一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用。
    在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录生效。

    2.conftest层级关系
    在web_conf_py项目工程下建两个子项目baidu、blog,并且每个目录下都放一个conftest.py和init.py(python的每个package必须要有init.py)

    web_conf_py是工程名称
    
    ├─baidu
    │  │  conftest.py
    │  │  test_1_baidu.py
    │  │  __init__.py
    │  
    │          
    ├─blog
    │  │  conftest.py
    │  │  test_2_blog.py
    │  │  __init__.py
    │   
    │  conftest.py
    │  __init__.py
    


    3.案例分析

    web_conf_py工程下conftest.py文件代码案例
    # web_conf_py/conftest.py
    import pytest
    
    @pytest.fixture(scope="session")
    def start():
        print("
    打开首页")
    

    baidu目录下conftest.py和test_1_baidu.py

    # web_conf_py/baidu/conftest.py
    import pytest
    
    @pytest.fixture(scope="session")
    def open_baidu():
        print("打开百度页面_session")
    
    
    # web_conf_py/baidu/test_1_baidu.py
    
    import pytest
    
    def test_01(start, open_baidu):
        print("测试用例test_01")
        assert 1
    
    def test_02(start, open_baidu):
        print("测试用例test_02")
        assert 1
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_1_baidu.py"])
    

    运行test_1_baidu.py结果可以看出,start和open_baidu是session级别的,只运行一次

    blog目录下conftest.py和test_2_blog.py代码
    baidu目录下conftest.py和test_1_baidu.py

    # web_conf_py/blog/conftest.py
    import pytest
    
    @pytest.fixture(scope="function")
    def open_blog():
        print("打开blog页面_function")
    
    
    # web_conf_py/blog/test_2_blog.py
    
    import pytest
    
    def test_03(start, open_blog):
        print("测试用例test_03")
        assert 1
    
    def test_04(start, open_blog):
        print("测试用例test_04")
        assert 1
    
    def test_05(start, open_baidu):
        '''跨模块调用baidu模块下的conftest'''
        print("测试用例test_05,跨模块调用baidu")
        assert 1
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_2_blog.py"])
    baidu目录下conftest.py和test_1_baidu.py
    

    运行结果可以看出,start起到全局作用,blog目录下的open_blog是function级别,每个用例调用一次。
    test_05(start, open_baidu)用例不能跨模块调用baidu模块下的open_baidu,所以test_05用例会运行失败

    转载于:https://www.jianshu.com/p/359477cc8990
    参考文章:https://www.jianshu.com/p/b825addb4e16

  • 相关阅读:
    pytorch torchversion标准化数据
    pytorch 中HWC转CHW
    pytorch torchversion自带的数据集
    pytorch Dataset数据集和Dataloader迭代数据集
    pytorch Model Linear实现线性回归CUDA版本
    pytorch实现手动线性回归
    pytorch中的前项计算和反向传播
    pytorch中CUDA类型的转换
    pytorch中tensor的属性 类型转换 形状变换 转置 最大值
    LightOJ 1074 spfa判断负环
  • 原文地址:https://www.cnblogs.com/hghua/p/13157599.html
Copyright © 2011-2022 走看看