• pytest文档68-pytest-lazy-fixture 插件解决 pytest.mark.parametrize 中使用 fixture 问题


    前言

    测试用例参数化的时候,使用 pytest.mark.parametrize 参数化传测试数据,如果我们想引用前面 不同fixture 返回的数据当测试用例的入参,前面一篇用fixture 参数化 prams 来间接解决这个问题。
    接下来用 pytest-lazy-fixture 插件可以直接在测试用例中参数化时 pytest.mark.parametrize 中使用 fixture

    pytest-lazy-fixture 插件

    pytest-lazy-fixture 插件是为了解决测试用例中用 @pytest.mark.parametrize 参数化调用fixture的问题,先pip安装

    pip install pytest-lazy-fixture

    目前使用的版本是 0.6.3

    >pip show pytest-lazy-fixture
    Name: pytest-lazy-fixture
    Version: 0.6.3
    Summary: It helps to use fixtures in pytest.mark.parametrize
    Home-page: https://github.com/tvorog/pytest-lazy-fixture
    Author: Marsel Zaripov
    Author-email: marszaripov@gmail.com
    License: MIT
    Location: e:python36libsite-packages
    Requires: pytest
    Required-by:
    

    parametrize 使用示例

    参数化的时候,其中一些测试数据,来源于前面的 fixture

    import pytest
    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    
    @pytest.fixture(params=[1, 2])
    def one(request):
        return request.param
    
    
    @pytest.mark.parametrize('arg1,arg2', [
        ('val1', pytest.lazy_fixture('one')),
    ])
    def test_func(arg1, arg2):
        print(arg1, arg2)
        assert arg2 in [1, 2]
    

    运行结果

    ..	est_y.py val1 1
    .val1 2
    .
    
    ============== 2 passed in 0.04 seconds ===========
    

    fixture 参数化 params

    在 fixture 参数化的 params 中也可以使用

    import pytest
    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    @pytest.fixture
    def one():
        return 1
    
    
    @pytest.fixture
    def two():
        return 2
    
    
    @pytest.fixture(params=[
        pytest.lazy_fixture('one'),
        pytest.lazy_fixture('two')
    ])
    def some(request):
        return request.param
    
    
    def test_func(some):
        assert some in [1, 2]
    
    

    pytest-lazy-fixture 相关的使用可以查看github 地址https://github.com/TvoroG/pytest-lazy-fixture

  • 相关阅读:
    LeetCode 905 按奇偶排序数组
    LeetCode 46 全排列
    Django 2随便使用笔记-Day01
    Python函数化编程整理
    Oracle解锁表笔记
    springboot(1)使用SpringBoot基础HTTP接口GET|POST|DELETE|PUT请求
    什么是Restful API
    C# 生成条形码BarCode 128
    ADB shell 的一般操作
    遇到“未能从程序集XXXX...加载类型XXX”的问题
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14096749.html
Copyright © 2020-2023  润新知