一、使用多個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"
運行結果: