zoukankan      html  css  js  c++  java
  • Pytest在一个函数中使用相同的fixture两次

    我用Dummy类来实现fixture功能。那就从你的测试中打出来。提供明确的方法名称,以便更好地理解您的测试在做什么。 在

    import pytest
    
    @pytest.fixture
    def login():
        class Dummy:
            def make_user(self):
                return 'New user name'
        return Dummy()
    
    def test_something(login):
        a = login.make_user()
        b = login.make_user()
        assert a == b
    

    诀窍是利用标记参数化使用“间接”开关,因此:

    @pytest.fixture
    def data_repeated(request):
        return [deepcopy({'a': 1, 'b': 2}) for _ in range(request.param)]
    
    
    @pytest.mark.parametrize('data_repeated', [3], indirect=['data_repeated'])
    def test(data_repeated):
        assert data_repeated == [
            {'a': 1, 'b': 2},
            {'a': 1, 'b': 2},
            {'a': 1, 'b': 2}]
    
    

    pytest.mark.parametrize里面indirect参数详细解释
    @pytest.mark.parametrize里面indirect参数,默认是False
    False: 就是parametrize里面argnames 参数当作一个普通的变量,不会去找变量对应函数的名的方法
    True: 就是parametrize里面argnames 参数当作函数执行,它会去找对应的函数,去执行

    另一种方法是复制fixture函数。这既简单又正确地处理了参数化fixture,并使用两个fixture的所有参数组合调用test函数。下面的示例代码引发了9个断言:

    import pytest
    
    @pytest.fixture(params=[0, 1, 2])
    def first(request):
        return request.param
    
    second = first
    
    def test_double_fixture(first, second):
        assert False, '{} {}'.format(first, second)
    
  • 相关阅读:
    STM32CubeMX 使用
    Zookeeper集群搭建
    golang zookeeper监听事件报错
    git push 报错
    springboot使用postgresql模式下数据库表找不到
    不要在循环中访问数据库,这样会严重影响数据库性能
    SQL查询效率(Oracle)
    游标 数据集 效率比较
    oracle 视图
    INDEX SKIP SCAN 和 INDEX RANGE SCAN以及索引会失效
  • 原文地址:https://www.cnblogs.com/hanfe1/p/15726279.html
Copyright © 2011-2022 走看看