內建fixture---tmpdir和tmpdir_factory
阿新 • • 發佈:2020-12-14
tmpdir和tmpdir_factory
內建的tmpdir
和tmpdir_factory
負責在測試開始執行前建立臨時檔案或目錄,並在測試結束後刪除。單個測試使用tmpdir
,多個測試使用tmpdir_factory
tmpdir
的作用範圍是函式級別,tmpdir_factory
的是會話級別 ,如果需要其他級別的,需要建立一個新的fixture。
def test_tmpdir(tmpdir):
a_file=tmpdir.join("a.txt")
b_dir=tmpdir.mkdir("something")
b_file=b_dir.join("b.txt")
a_file.write("aaa")
b_file.write("bbb")
assert a_file.read()=="aaa" and b_file.read()=="bbb"
pytestconfig
內建的pytestconfig可以通過命令列引數,選項,配置檔案,外掛,執行目錄等方式來控制pytest。它是request.config的快捷方式,被稱為“pytest配置物件”
def pytest_addoption(parser): #pytest的hook函式pytest_addoption,可新增命令列選項
parser.addoption("--myopt",action="store_true",help="some my option")
parser.addoption("--foo",action="store",default="bar",help="foo:bar or baz")
def test_option(pytestconfig):
print(pytestconfig.gettoption('myopt'))
print(pytestconfig.gettoption('foo'))
print(pytestconfig.option.foo)
# 一些例子
def test_pytestconfig(pytestconfig):
print(pytestconfig.args)
print(pytestconfig.inifile)
print(pytestconfig.invocation_dir)
print(pytestconfig.rootdir)
print(pytestconfig.getoption('showlocals'))
使用cache
cache用於測試會話傳遞給下一段會話
--last-failed(僅執行上次未通過的)和--failed-first (之前未通過的首先執行)很好的展示cache的功能,看看cache是如何儲存這些標識資料的。
--cache-show
可以顯示cache儲存的資訊
--clear-cache
執行前清空cache快取
def test_cache(cache):
cache.get(key,default)
cache.set(key,value)
使用capsys
允許使用程式碼讀取stdout和stderr,capsys.redouterr()
也可以臨時禁止抓取日誌輸出capsys.redouterr()
pytest通常會抓取輸出,僅當全部用例結束後,抓取到的日誌才會顯示出來。
--s
引數可以關閉這個功能,在測試執行期就把輸出直接傳送到stdout,但有時可能只需要部分資訊,則可以用 capsys.disabled()
臨時讓輸出繞過預設的輸出捕獲機制capsys.redouterr()
def test_disabled(capsys):
with.capsys.disabled():
print("aaaa")
print("bbb") # pytest -q 和 pytest -q -s的區別
monkeypatch
在執行期間對類或模組進行動態修改。常用於替換被測試程式碼的部分執行環境,或將輸入依賴或輸出依賴替換成更容易測試的物件或函式。測試結束後,無論結果是通過還是失敗,程式碼都會復原(所有修改都會撤銷)
例如:修改環境變數monkey.setenv('HOME',tmpdir.mkdir('home'))