pytest-fixture之conftest.py

簡介python

fixture優點

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名稱

  代碼筆記測試

conftest.py配置

問題:若是多個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"])
相關文章
相關標籤/搜索