1. 程式人生 > >Pytest學習筆記3:fixture配置用例預置條件

Pytest學習筆記3:fixture配置用例預置條件

setup和teardown可以實現在測試用例之前或之後加入一些操作,但這種是整個指令碼全域性生效的,如果我想實現以下場景:
用例1需要先登入,用例2不需要登入,用例3需要先登入。很顯然這就無法用setup和teardown來實現了。這就是本篇學習的目的,自定義測試用例的預置條件

firture相對於setup和teardown來說應該有以下幾點優勢

  • 命名方式靈活,不侷限於setup和teardown這幾個命名
  • conftest.py 配置裡可以實現資料共享,不需要import就能自動找到一些配置
  • scope=”module” 可以實現多個.py跨檔案共享前置
  • scope=”session” 以實現多個.py跨檔案使用一個session來完成多個用例

conftest.py 管理一些預置的操作場景

  • conftest.py配置指令碼名稱是固定的,不能改名稱
  • conftest.py與執行的用例要在同一個pakage下,並且有init.py檔案
  • 不需要import匯入 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"])

執行結果:

test_fix1.py

輸入賬號,密碼先登入
.用例1:登入之後其它動作111
.用例2:不需要登入,操作222
輸入賬號,密碼先登入
.用例3:登入之後其它動作333