pytest傳參的兩種方式

#test_param.py

import pytest


class TestParam:
    '''
    pytest參數化
        1. 在測試用例上加註解@pytest.mark.parametrize("loginame,password",[(值1,值2),(值1,值2)])
        2. fixture傳參。
         1)在測試用例上加註解@pytest.mark.parametrize("login_data",data2,indirect=True)
    login_data 是fixture函數
    @pytest.fixture()
    def login_data(request):
        return request.param
    測試用例取數據時用字典的方式取
        2)測試用例不用寫註解,定義fixture函數時,fixture註解中傳入參數 @pytest.fixture(params=data3)
    '''


    data = [("aaa","e10adc3949ba59abbe56e057f20f883e"),("aaaa","bbb")]
    @pytest.mark.parametrize("loginame,password",data)
    @pytest.mark.skip
    def test_login(self,loginame,password):
        print("用戶名密碼",loginame,1,password)
        print("kkk")




    @pytest.fixture()
    def login_data(request):
        return request.param

    data2 = [{"loginame":"aaa","password":"e10adc3949ba59abbe56e057f20f883e"}
             ,{"loginame":"","password":"1"}]
    @pytest.mark.parametrize("login_data",data2,indirect=True)
    @pytest.mark.skip
    def test_login2(self,login_data):
        print(login_data,type(login_data))
        print("用戶名密碼", login_data.get("loginame"), 1, login_data.get("password"))




    data3 = [{"loginame": "aaa", "password": "e10adc3949ba59abbe56e057f20f883e"}
        , {"loginame": "", "password": "1"}]
    @pytest.fixture(params=data3)
    def login_data3(self,request):
        print(request)
        return request.param

    def test_login3(self,login_data3):
        print(login_data3)
        pass

 

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