能夠理解成存放fixture的配置文件python
多個測試用例腳本都須要先進行登陸,再進行業務操做,按照封裝的特性,確定須要抽離登陸這部分,那麼咱們如今就使用conftest.py來實現。session
工程目錄結構以下:
測試
即項目根目錄下的conftest文件,通常寫全局的fixture,在接口自動化中抽離登陸使用,示例代碼以下:code
# -*- coding: utf-8 -*- # @Time : 2020/11/11 21:26 # @Author : longrong.lang # @FileName: conftest.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang import pytest @pytest.fixture(scope='session') def login(): print(u'調用登陸接口') username="zhangsan" token="ZXF3ZTEyMTIzMTIxYWUxcWUxYGAyYDJgYDIx" yield username, token print("====登陸成功,返回用戶名,token!") @pytest.fixture(autouse=True) def get_userinfo(login): username, token = login print(f"== 每一個用例都調用的外層fixture:打印用戶名username:{username} 和token: {token} ==")
說明:此處必需要配合yield使用,也就是teardown(能夠理解爲afterclass)blog
示例代碼以下:token
# -*- coding: utf-8 -*- # @Time : 2020/11/11 21:56 # @Author : longrong.lang # @FileName: test_getUserInfo.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang def test_getUserInfo(login): username,token=login print(f"== 每一個用例都調用的外層fixture:打印用戶名\nusername:{username} 和token: {token} ==")
運行結果:
接口
經過conftest.py,配置一些針對query的測試用例獨有的fixture,好比:查詢商品,示例代碼以下:utf-8
# -*- coding: utf-8 -*- # @Time : 2020/11/11 22:19 # @Author : longrong.lang # @FileName: conftest.py.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang import pytest @pytest.fixture(scope='module') def query(login): print("====調用查詢接口") shopName="AJ男鞋" size=44 colour="紅色" yield shopName, size,colour print(f"調用查詢接口成功,返回查詢商品信息")
對應測試用例,示例代碼以下:get
# -*- coding: utf-8 -*- # @Time : 2020/11/11 22:27 # @Author : longrong.lang # @FileName: test_case1.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang def test_query_shop(query): shopName,size,colour=query print(f"\n返回查詢商品信息:商品名稱: {shopName} 顏色:{colour} 鞋號: {size}")
運行結果:
it
沒有__init__.py文件也沒有conftest.py文件,對應測試用例,示例代碼以下:
# -*- coding: utf-8 -*- # @Time : 2020/11/11 22:40 # @Author : longrong.lang # @FileName: test_nofixture.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang def test_no_fixture(login): print("==\n沒有__init__測試用例,登陸後,我就想退出登陸了==", login)
運行結果:
經過conftest.py,配置一些針對addcart的測試用例獨有的fixture,好比:加入購物車,示例代碼以下:
# -*- coding: utf-8 -*- # @Time : 2020/11/11 22:50 # @Author : longrong.lang # @FileName: conftest.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang import pytest @pytest.fixture(scope='function') def addcart(login): print("從詳情頁登陸,將商品加入購物車") price="2099元" yield price print('添加購物車成功,累計計算中')
對應測試用例,示例代碼以下:
# -*- coding: utf-8 -*- # @Time : 2020/11/11 22:56 # @Author : longrong.lang # @FileName: test_case.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang def test_addCart(addcart): price=addcart print(f"\n返回商品價格: {price} ")
運行結果:
示例代碼以下:
# -*- coding: utf-8 -*- # @Time : 2020/11/11 23:17 # @Author : longrong.lang # @FileName: run.py # @Software: PyCharm # @Cnblogs :https://www.cnblogs.com/longronglang import pytest if __name__ == '__main__': pytest.main(["-q", "../python-practice/"])
運行結果: