日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytest装饰器@pytest.mark.parametrize一键生成接口正交试验用例

發布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytest装饰器@pytest.mark.parametrize一键生成接口正交试验用例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

我們在做接口測試時,有時會遇到涉及用例特別多的時候,每個用例都去手動調一遍,很費時費力,也是不現實的,這篇文章我們就解決下這種費時費力的情況.

一、業務需求

某所大學通信系共2個班級,剛考完某一門課程,想通過“性別”、“班級”和“成績”這三個查詢條件對通信系這門課程的成績分布,男女比例或班級比例進行人員查詢:

根據“性別”=“男,女”進行查詢

根據“班級”=“一班,二班”查詢

根據“成績”=“及格,不及格”查詢

按照傳統設計——全部測試

分析上述測試需求,有3個被測元素,被測元素我們稱為因素,每個因素有兩個取值,我們稱之為水平值,所以全部測試用例個數是2*2*2=8,參見下表

序號

性別

班級

成績

1

1班

及格

2

1班

不及格

3

2班

及格

4

2班

不及格

5

1班

及格

6

1班

不及格

7

2班

及格

8

2班

不及格

如果有10個因素,每個因素有2個水平取值,那么我們需要組合2*2*2*2*2*2*2*2*2*2=1024個用例,這樣去實現是不可能的,大家是如何處理這種情況的?

二、利用pytest裝飾器@pytest.mark.parametrize實現快速生成所有正交測試用例可以解決這種問題,我們看到腳本生成的用例和上面手動列的用例完全一樣,這樣我們就可以根據需求中因數和因數水平值,快速生成所有正交測試用例

@pytest.mark.parametrize('因數1字段',['因數1的水平值1','因數1的水平值2'])

@pytest.mark.parametrize('因數2字段',['因數2的水平值1','因數2的水平值2'])

……

這樣有幾個因素就寫幾個裝飾器,然后每個裝飾器里分別放入對應因數的水平值,組成不同的測試用例data,一次調用可出所有測試用例結果,可實現快速接口測試,是不是很方便呢。

import pytestclass Test(object):@pytest.mark.parametrize('sex',['男','女'])@pytest.mark.parametrize('classes ', ['一班','二班'])@pytest.mark.parametrize('score', ['及格', '不及格'])def test(self,sex,classes,score):data={'sex':'','classes':'','score':''}data['sex']=sexdata['classes'] = classesdata['score'] = scoreprint(data) if __name__=="__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test02.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0 collected 8 itemstest02.py {'classes': '一班', 'score': '及格', 'sex': '男'} .{'classes': '一班', 'score': '及格', 'sex': '女'} .{'classes': '二班', 'score': '及格', 'sex': '男'} .{'classes': '二班', 'score': '及格', 'sex': '女'} .{'classes': '一班', 'score': '不及格', 'sex': '男'} .{'classes': '一班', 'score': '不及格', 'sex': '女'} .{'classes': '二班', 'score': '不及格', 'sex': '男'} .{'classes': '二班', 'score': '不及格', 'sex': '女'} .============================== 8 passed in 0.26s ==============================Process finished with exit code 0

?

?

總結

以上是生活随笔為你收集整理的Pytest装饰器@pytest.mark.parametrize一键生成接口正交试验用例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。