Pytest - Fixture(9) - Fixture传参给测试用例

发布时间 2023-05-30 18:03:52作者: 粥雨

Pytest - Fixture传参给测试用例

  • 如果想要依赖fixture传递参数给测试用例,可以通过 yield 或者 return 来返回参数;

    • yield:实现setup和teardown,并将参数传递给测试用例;

    • return :仅实现setup,并将参数传递给测试用例而已;


传单个参数

  • return 传递单个参数:

    test_py.py

    import pytest
    
    @pytest.fixture
    def login():
        name = "==我是账号=="
        # 返回参数
        return name
    
    
    # 使用函数传参
    def test_s1(login):
        print("\n**测试用例**")
    
        # 获取使用参数
        print(login)
    
    if __name__ == '__main__':
        pytest.main(['-q', 'test_py.py'])
    

    image-20230529093926332


  • yield 传递单个参数:

    test_py.py

    import pytest
    
    @pytest.fixture
    def login():
        name = "==我是账号=="
        # 返回参数
        yield name
    
        print("^^测试结束^^")
    
    
    # 使用函数传参
    def test_s1(login):
        print("\n**测试用例**")
    
        # 返回的是一个元组
        print(login)
    
    if __name__ == '__main__':
        pytest.main(['-q', 'test_py.py'])
    

    image-20230529093818352



传多个参数

  • 如果测试用例想要依赖fixture读取测试数据文件,返回多组不同的数据,返回多个参数;

  • 测试用例获取的时候也用多个参数接受数据;

    test_py.py

    import pytest
    
    @pytest.fixture
    def login():
        name = "==我是账号=="
        pwd = "==我是密码=="
        age = "==我是年龄=="
    
        # 返回变量
        yield name, pwd, age
    
    
    # 使用函数传参
    def test_s1(login):
        print("\n==测试用例==")
    
    # 返回的是一个元组
    print(f"返回的是一个元组:{login}")
    
    # 分别赋值给不同变量
    name, pwd, age = login
    
    # 输出变量内容
    print("输出变量内容:" + name, pwd, age)
    
    if __name__ == '__main__':
        pytest.main(['-q', 'test_py.py'])
    

    image