pytest補充

1.pytest配置文件

pytest.ini : pytest的主配置文件,可以改變pytest的默認行爲。也可以自定義參數。

conftest.py : 把公共代碼寫在裏面.主要爲把hook函數與fixture寫在裏面。作用於本目錄的用例與子目錄的用例

__init__.py:可以避免不同目錄下有相同的模塊名。沒有這個,運行時報錯。建議在測試用例的每個目錄都有此文件。

2.查看ini文件。

pytest --help.可知道pytest目錄支持哪些參數。也可以在conftest.py中寫hook函數來實現自定義參數。

其中常用:

-v 列出用例詳細信息

-s 顯示print信息

-k 支持測試用例名關鍵字運行

-m 標記並分組

--markers 可以顯示當前項目的所有標記。自定義的標記寫在pytest.ini中進行註冊。

norecursedirs = .* data config utils 縮小範圍搜索,否則會遞歸所有目錄,運行時

testpaths=tests  指定用例運行目錄

3.fixture yield

yield可以實現返回數據。

session級別 yield前的內容在整個測試項目中只執行一次,yield後的內容也是隻執行一次。

@pytest.fixture(scope = "session")
def env():
    print("start")
    # return 1
    yield 1
    print("end")

4.fixture 參數化

zip 函數的使用

import pytest

user_list = [{"name":"sophia","password":"111","caseName":"這是測試用例1"},{"name":"sophia222","password":"222","caseName":"這是測試用例2"}]
name_list = []
password_list = []
caseName_list = []
for user in user_list:
    name_list.append(user["name"])
    password_list.append(user["password"])
    caseName_list.append(user["caseName"])

#注意zip的使用
s = list(zip(name_list, password_list))

class TestDemo2:
    @pytest.mark.parametrize("name,password",s,ids=caseName_list)
    def test_a(self,env,name,password):
        print(env)
        print(name,password)
        print(s)
        assert 10 + 1 == 11

未完待續......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章