簡介python
fixture相對於setup和teardown的優點session
一、命名方式靈活,不侷限於setup和teardown這幾個命名
二、contest.py配置能夠實現數據共享,不須要import就能自動尋找一些配置
三、scope = "module" 能夠實現多個 .py跨文件共享前置,每個.py文件調用一次
四、scope = "session" 能夠實現多個.py文件使用一個session來完成多個用例
fixture(scope ="function", params=None, autouse=False, ids=None, name=None) """ 使用裝飾器標記fixture的功能,fixture功能的名稱能夠在之後使用 引用它會在運行測試以前調用它:test模塊或類可使用pytest.mark.usefixtures(fixturename標記。 測試功能能夠直接使用fixture名稱做爲輸入參數,在這種狀況下,夾具實例從fixture返回功能將被注入。 """ :scope 有四個參數:function(默認), class, moudle, session :params 一個可選的參數列表,他將致使多個參數調用fixture功能和全部測試使用它 :autouse 若是True,則全部測試激活fixtrue func能夠看到他 :ids 每一個字符串id列表,每一個字符穿對應於params,這樣他們就是測試id的一部分,若是沒有提供id他們將從params自動生成 :name fixture名稱
代碼筆記測試
問題:若是多個py文件都須要調用登陸功能,因此不須要把功能寫在用例中,須要單獨寫配置文件,操做 conftest.py配置 :conftest.py配置腳本名稱是固定,不能修更名稱 :conftest.py與運行的用例要在同一個pakage下,而且有__init__.py文件 :不須要導入conftest.py,pytest用例會自動查找
conftest.py import pytest @pytest.fixture() def login(): print("輸入帳號,密碼先登陸") test_fix1.py import pytest def test_s1(login): print("用例1:登陸以後其它動做111") def test_s2(): # 不傳login print("用例2:不須要登陸,操做222") def test_s3(login): print("用例3:登陸以後其它動做333") if __name__ == "__main__": pytest.main(["-s", "test_fix1.py"])