目錄
第一種:通過yaml文件獲取數據(一維列表)
第二種:通過yaml文件獲取數據(二維列表)
第三種:通過yaml文件獲取數據(@pytest.fixture)
資料獲取方法
第一種:通過yaml文件獲取數據(一維列表)
data.yaml文件內容如下:
- '軟件測試'
- '單元測試'
- '自動化測試'
- '性能測試'
- '測試開發'
- '測試架構師'
測試用例內容如下:
@pytest.mark.parametrize('data',? yaml.load(open('data.yml', 'r')))
def test_ddt(data):url='https://www.baidu.com/search/query?key='header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}res=requests.get(url+data, header)assert res.status_code==200
第二種:通過yaml文件獲取數據(二維列表)
data.yaml文件內容如下:
#用例1
-
api_name: page_title
url: http://www.baidu.com/
header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}
#用例2
-
api_name: searching
url: http://www.baidu.com/
header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}
#用例3
-
api_name: login
url: http://www.baidu.com/
header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}
測試用例內容如下:
@pytest.mark.parametrize('data', yaml.load(open('data.yml', 'r')))
def test_ddt(data):api_name =?data['api_name']url=data['url']header =?data['header']res=requests.get(url?+?api_name,?header)assert? ?res.status_code ==data['data']['status_code']
第三種:通過yaml文件獲取數據(@pytest.fixture)
@pytest.fixture()
def?login(request):name = request.paramprint(f"== 賬號是:{name} ==")return?namedata?= ["pyy1", "polo"]@pytest.mark.parametrize("login",?data, indirect=True)
def test_name(login):print(f" 測試用例的登錄賬號是:{login} ")
@pytest.fixture()
def?logins(request):param = request.paramprint(f"賬號是:{param['username']},密碼是:{param['pwd']}")return?paramdata?= [?{"username": "name1", "pwd": "pwd1"},? {"username": "name2", "pwd": "pwd2"}?]@pytest.mark.parametrize("logins",?data, indirect=True)
def test_name_pwd(logins):print(f"賬號是:{logins['username']},密碼是:{logins['pwd']}")
# 多個fixture
@pytest.fixture(scope="module")
def input_user(request):user = request.paramprint("登錄賬戶:%s" % user)return user@pytest.fixture(scope="module")
def input_psw(request):psw = request.paramprint("登錄密碼:%s" % psw)return pswdata = [("name1", "pwd1"),? ("name2", "pwd2")]@pytest.mark.parametrize("input_user,input_psw", data, indirect=True)
def test_more_fixture(input_user, input_psw):print("fixture返回的內容:", input_user, input_psw)name = ["name1", "name2"]
pwd = ["pwd1", "pwd2"]@pytest.mark.parametrize("input_user", name, indirect=True)
@pytest.mark.parametrize("input_psw", pwd, indirect=True)
def test_more_fixture(input_user, input_psw):print("fixture返回的內容:", input_user, input_psw)
資料獲取方法
【留言777】
各位想獲取源碼等教程資料的朋友請點贊 + 評論 + 收藏,三連!
三連之后我會在評論區挨個私信發給你們~