python使用ddt過程中遇到的問題及解決方案【推薦】
前言:
在使用DDT數(shù)據(jù)驅(qū)動+HTMLTestRunner輸出測試報告時遇到過2個問題:
1、生成的測試報告中,用例名稱后有dict() -> new empty dictionary
2、使用ddt生成的用例名稱無法更改

1、用例名稱后有dict() -> new empty dictionary
報告中用例名稱后有dict() -> new empty dictionary,如圖所示:

解決方案:這是ddt高版本1.2.0的bug
1、cmd先通過pip uninstall ddt 卸載ddt,
2、然后再安裝一個低版本的ddt,命令pip install ddt==1.1.3

安裝后再運行程序,結(jié)果如下

2、使用ddt生成的用例名稱無法更改
如上圖所示測試用例名稱都是test_api_index,運行結(jié)果無法看出用例執(zhí)行的是哪條數(shù)據(jù),翻閱網(wǎng)上的資料找到一個比較好的方法,講解比較詳細,這段內(nèi)容來自鏈接https://www.cnblogs.com/Simple-Small/p/9230382.html
ddt源碼中有個函數(shù)用來生成用例名稱, mk_test_name
它接收兩個參數(shù):name 和 value.
name:為測試用例的名字。即test_api.
value:為測試數(shù)據(jù),ddt是處理一組測試數(shù)據(jù)。而這個value就是這一組數(shù)據(jù)中的每一個測試數(shù)據(jù)。
對value的值是有限制的:要么就是單值變量,要么就是元組或者列表并且要求元組和列表中的數(shù)據(jù)都是單值變量。如("name","port") 、["name","port"]
如果傳進來的測試數(shù)據(jù),不符合value的要求,那么測試用例名字為:name_index。
如果傳進來的測試數(shù)據(jù),符合value的要求,那么測試用例名字為:name_index_value。如果value為列表或者元組,那么將列表/元組的每個數(shù)據(jù)依次追加在末尾。
比如傳進來的name值為test_login,value值為["name","port"]。那最終的測試用例名字是:test_login_01_name_port。
如果傳進來的name值為test_login,value值為{"userName":"18500384561", "password":"123456"},那最終的測試用例名字為:test_login_1。 因為它不支持對字典類型的數(shù)據(jù)處理 。
而我的接口自動化框架中,ddt處理的數(shù)據(jù)是一列表:列表當中每個數(shù)據(jù)都為字典。ddt一遍歷整個列表,那傳給value的值剛好是字典。。
所以我得到的測試用例名稱就是:test_login_1,test_login_2,test_login_3

為了讓我的測試報告,呈現(xiàn)的更好。那就改改ddt源碼,讓它能夠適應我的框架。
考慮兩個問題:
1、不同接口的測試用例名字如何來??
2、如何讓ddt支持對字典的處理??
解決方案:
第一個問題:每一個測試用例主動提供一個用例名字,說明你是什么接口的什么場景用例。比如:接口名_場景名。login_success、login_noPasswd、login_wrongPasswd等。
在我的框架當中,每一個測試用例是一個字典。那么我就在字典中添加一個鍵值對,case_name=用例名稱
第二個問題:在ddt中添加對字典的處理,如果字典中有case_name字段,則將字典中鍵名為case_name的值作為測試用例名稱中的value值。
修改后的ddt源碼為(紅色粗體部分為修改的內(nèi)容):

更改代碼后再執(zhí)行,結(jié)果如下:

總結(jié)
以上所述是小編給大家介紹的python使用ddt過程中遇到的問題及解決方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Win10下python 2.7.13 安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了Win10下python 2.7.13 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09
Python如何實現(xiàn)xml解析并輸出到Excel上
本文介紹了如何使用Python的ElementTree模塊解析XML文件,并將解析后的數(shù)據(jù)寫入Excel文件,通過編寫XML文件、解析XML、編寫將數(shù)據(jù)寫入Excel的函數(shù),最終實現(xiàn)XML數(shù)據(jù)到Excel的轉(zhuǎn)換2025-02-02
python中urllib.unquote亂碼的原因與解決方法
這篇文章主要給大家介紹了python中urllib.unquote亂碼的原因與解決方法,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友可以參考學習,下面跟著小編一起來學習學習吧。2017-04-04
詳解python os.path.exists判斷文件或文件夾是否存在
這篇文章主要介紹了詳解python os.path.exists判斷文件或文件夾是否存在,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
Python中json.dumps()和json.dump()的區(qū)別小結(jié)
在Python中,json.dumps()和json.dump()是兩個常用的函數(shù),本文主要介紹了Python中json.dumps()和json.dump()的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-02-02

