一、使用多个fixture
如果用例需要用到多个fixture的返回数据,fixture也可以return一个元组,list或字典,然后从里面取出对应的数据。
import pytest @pytest.fixture() def user(): print("获取用户名") a = "admin" b = "123456" return (a,b) def test_1(user): u = user[0] p = user[1] print("测试账号:%s,密码:%s"%(u,p)) assert u == "admin" if __name__=="__main__": pytest.main(["-s","test_fixture4.py"])
运行结果:
当然也可以分开定义成多个fixture,然后test_用例传多个fixture参数。
import pytest @pytest.fixture() def user(): print("获取用户名") a = "admin" return a @pytest.fixture() def psw(): print("获取密码") b = "123456" return b def test_1(user,psw): """传多个fixture""" print("测试账号:%s,密码:%s"%(user,psw)) assert user == "admin" if __name__=="__main__": pytest.main(["-s","test_fixture5.py"])
运行结果:
二、fixture与fixture相互调用
fixture与fixture直接也能相互调用
import pytest @pytest.fixture() def first(): print("获取用户名") a = "admin" return a @pytest.fixture() def second(first): """psw调用user fixture""" a = first b = "123456" return (a,b) def test_1(second): """用例fixture""" print("测试账号:%s,密码:%s"%(second[0],second[1])) assert second[0]=="admin"
运行结果: