從事FPGA開發無論是仿真還是上板驗證,總少不了各種各樣的case遍歷,手動執行起來就太麻煩了。尤其像從事FPGA加速行業來說,CPU與FPGA版卡的交互和測試基本基于PCIe來實現,而軟件有大量的測試框架,不妨“軟為硬用”。這里就基于python的自動化測試框架unittest來實現一個簡單的自動化上板測試流程,同時自動生成html測試報告。
unittest
unittest是python自帶的測試框架,其主要由TestCase、unitunittest、TestRunner三大部分,詳細的介紹可參考該文檔鏈接。
通過unittest,可以很快的實現一個自動化測試的case集,如下簡單的demo:
執行結果:
基于unittest,在日常工作中調試FPGA可以很容易把測試集給組織起來,而不必每次都手動執行。
html report
unittest的測試結果除了控制臺輸出外也可以存儲至文件中,但相對來講始終不如html報告更清晰些。這里采用HTMLTestRunner來實現,其為開源源代碼,可通過下面的鏈接獲取:
將HTMLTestRunner.py下載下來后即可以將代碼保存在python的lib庫中,也可以放在測試代碼的工程目錄下面。如果想放在python的lib庫中,可通過在命令行下按照下面的方式找到python的lib目錄:
IT-C02YV1UELVDL:chain xxx$ python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
> import sys
> print(sys.path)
放在其打印輸出的任何一個目錄下即可。
其使用方式如下demo所示:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import unittest
import sys
from HTMLTestRunner import HTMLTestRunner
def add(data1,data2):
return data1+data2
class addTestCase(unittest.TestCase):
def test_add(self):
""" 加法器校驗 '"""
sum=add(1,2)
self.assertEqual(3,sum)
def test_add1(self):
""" 加法器校驗2 '"""
sum=add(3,4)
self.assertEqual(8,sum)
if __name__ == "__main__":
reload(sys)
sys.setdefaultencoding("utf-8")
suite=unittest.makeSuite(addTestCase,"test")
testlogName="./reeport.html"
fp=open(testlogName,'wb')
runner=HTMLTestRunner(fp,title="add test",description="test demo")
runner.run(suite)
fp.close()
值得注意的是第20行、21行用于解決下面的錯誤類型:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 88: ordinal not in range(128)
最終會在執行目錄下生成一個report.html的測試報告,可通過瀏覽器打開:
針對python3環境的使用,可通過下方閱讀原文方式來查看修改方式。
寫在最后
如果選用基于cocotb來進行代碼仿真,也可采用這種形式來生成自動化測試報告。
原文標題:“軟為硬用”—基于python的自動化測試
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
FPGA
+關注
關注
1629文章
21729瀏覽量
602977 -
自動化測試
+關注
關注
0文章
208瀏覽量
26905 -
python
+關注
關注
56文章
4792瀏覽量
84627
原文標題:“軟為硬用”—基于python的自動化測試
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論