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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python怎么测试c代码_如何正确测试python中的C-API,C-API返回错误代码

發布時間:2024/9/27 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python怎么测试c代码_如何正确测试python中的C-API,C-API返回错误代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我的設置

我正在使用Python中的pytest和ctypes測試C庫中的函數。C庫中的每個函數調用一個嵌入式linux PCI板上的函數,然后C庫函數返回一個整數,該整數映射到一組返回代碼。如果函數成功,則返回0,否則返回其他錯誤代碼。在

問題

我正在尋找一些關于測試此設置的最佳方法的見解,基本上我正在嘗試找出測試此庫的最佳實踐。拋出異常和斷言測試用例的最佳方法。我使用的測試環境目前使用的是pytest,切換會很痛苦。在

為了測試所有不同的條件,需要設置很多狀態來測試,因為嵌入式linux板有狀態。因此理想情況下,python可以捕捉到測試中出現的所有錯誤(如果有錯誤)。在

我的當前設置

目前我已經有了包裝C庫代碼的python函數。測試將調用python代碼,如果函數沒有返回0,則包裝python函數將拋出異常。因為我使用ctypes來調用DLL上的函數,所以所有的C函數都被python包裝起來,以便于調用,所以傳遞參數也更容易。在

優點如果在測試或任何中間測試的設置中出現問題,則將引發異常。當測試用例的設置失敗時,這使得調試失敗的測試用例變得更加容易。在

缺點斷言一個函數是成功的(返回0)是無用的,因為在函數返回之前會拋出一個錯誤。在

如果測試在特定條件下調用函數會導致錯誤,則必須將測試用例包裝得凌亂,try except塊try:

return_code = call_to_c_api()

assert return_code == 0, "Message about test case"

except MyCustomException:

assert MyCustomException.message="Return code of python wrapped api"

另一個選擇

不要用python庫包裝C庫,如果其中一個安裝函數不起作用,就要進行測試來斷言失敗。在

優點當您預期會發生故障時,很容易斷言來自C API的返回值不是O

缺點為了使測試更易于調試,對C API的每一次調用都需要python測試中的代碼來確保它通過。即使這只是一個測試設置的調用。這意味著每個測試的代碼行數幾乎是原來的兩倍。(或者您無法捕獲設置中的錯誤,只能在測試失敗時斷言。這意味著當測試用例的設置失敗時調試會很痛苦)

如果有人能給我任何的最好的方法來測試這將是非常感謝!可能還有其他的方法來測試這個,我還沒有考慮過!在

干杯!在

總結

以上是生活随笔為你收集整理的python怎么测试c代码_如何正确测试python中的C-API,C-API返回错误代码的全部內容,希望文章能夠幫你解決所遇到的問題。

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