Pytest fixture之request傳參
- 2019 年 11 月 28 日
- 筆記
Pytest中我們經常會用到數據參數化,我們來介紹下裝飾器@pytest.fixture()配合request傳參的使用
user = request.param
如果想把登錄操作放到前置操作里,也就是用到@pytest.fixture裝飾器,傳參就用默認的request參數
user = request.param 這一步是接收傳入的參數,本案例是傳一個參數情況
@pytest.mark.parametrize("input_user",user_list,indirect=True)中indirect=True是指用user_list、pwd_list數據對「input_user」、「input_pwd」這個fixture進行參數化,雖然裝飾器寫在測試用例上,但是卻是對測試用例使用的fixture進行傳遞數據,這正是indirect的意思.
request傳多個參數、多個fixtrue
import pytest user_list=['wangxiao','zhangxiao'] pwd_list=['123456','123'] @pytest.fixture(scope="module") def input_user(request): user=request.param print("用戶名:%s"%user) return user @pytest.fixture(scope="module") def input_pwd(request): pwd = request.param print("密碼:%s"%pwd) return pwd @pytest.mark.parametrize("input_user",user_list,indirect=True) @pytest.mark.parametrize("input_pwd",pwd_list,indirect=True) def test_login(input_user,input_pwd): print(input_user,input_pwd) if __name__=='__main__': pytest.main(['-s','test01.py']) "C:Program FilesPython35python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:UserswangliPycharmProjectsTesttest plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 4 items test01.py 用戶名:wangxiao 密碼:123456 wangxiao 123456 .用戶名:zhangxiao zhangxiao 123456 .密碼:123 zhangxiao 123 .用戶名:wangxiao wangxiao 123 . ============================== 4 passed in 0.06s ============================== Process finished with exit code 0
request傳多個參數、單個fixtrue
import pytest user_list=[('wangxiao','123'),('chengzi','123456')] @pytest.fixture(scope="module") def login(request): user = request.param pwd = request.param print("用戶名:%s,密碼:%s"%(user,pwd)) return user,pwd @pytest.mark.parametrize("login",user_list,indirect=True) def test_login(login): print(login) if __name__=='__main__': pytest.main(['-s','test01.py']) "C:Program FilesPython35python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:UserswangliPycharmProjectsTesttest plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 2 items test01.py 用戶名:('wangxiao', '123'),密碼:('wangxiao', '123') (('wangxiao', '123'), ('wangxiao', '123')) .用戶名:('chengzi', '123456'),密碼:('chengzi', '123456') (('chengzi', '123456'), ('chengzi', '123456')) . ============================== 2 passed in 0.04s ============================== Process finished with exit code 0