從事FPGA開(kāi)發(fā)無(wú)論是仿真還是上板驗(yàn)證,總少不了各種各樣的case遍歷,手動(dòng)執(zhí)行起來(lái)就太麻煩了。尤其像從事FPGA加速行業(yè)來(lái)說(shuō),CPU與FPGA版卡的交互和測(cè)試基本基于PCIe來(lái)實(shí)現(xiàn),而軟件有大量的測(cè)試框架,不妨“軟為硬用”。這里就基于python的自動(dòng)化測(cè)試框架unittest來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的自動(dòng)化上板測(cè)試流程,同時(shí)自動(dòng)生成html測(cè)試報(bào)告。
unittest
unittest是python自帶的測(cè)試框架,其主要由TestCase、unitunittest、TestRunner三大部分,詳細(xì)的介紹可參考該文檔鏈接。
通過(guò)unittest,可以很快的實(shí)現(xiàn)一個(gè)自動(dòng)化測(cè)試的case集,如下簡(jiǎn)單的demo:
執(zhí)行結(jié)果:
基于unittest,在日常工作中調(diào)試FPGA可以很容易把測(cè)試集給組織起來(lái),而不必每次都手動(dòng)執(zhí)行。
html report
unittest的測(cè)試結(jié)果除了控制臺(tái)輸出外也可以存儲(chǔ)至文件中,但相對(duì)來(lái)講始終不如html報(bào)告更清晰些。這里采用HTMLTestRunner來(lái)實(shí)現(xiàn),其為開(kāi)源源代碼,可通過(guò)下面的鏈接獲?。?/p>
將HTMLTestRunner.py下載下來(lái)后即可以將代碼保存在python的lib庫(kù)中,也可以放在測(cè)試代碼的工程目錄下面。如果想放在python的lib庫(kù)中,可通過(guò)在命令行下按照下面的方式找到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)
放在其打印輸出的任何一個(gè)目錄下即可。
其使用方式如下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):
""" 加法器校驗(yàn) '"""
sum=add(1,2)
self.assertEqual(3,sum)
def test_add1(self):
""" 加法器校驗(yàn)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行用于解決下面的錯(cuò)誤類(lèi)型:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 88: ordinal not in range(128)
最終會(huì)在執(zhí)行目錄下生成一個(gè)report.html的測(cè)試報(bào)告,可通過(guò)瀏覽器打開(kāi):
針對(duì)python3環(huán)境的使用,可通過(guò)下方閱讀原文方式來(lái)查看修改方式。
寫(xiě)在最后
如果選用基于cocotb來(lái)進(jìn)行代碼仿真,也可采用這種形式來(lái)生成自動(dòng)化測(cè)試報(bào)告。
原文標(biāo)題:“軟為硬用”—基于python的自動(dòng)化測(cè)試
文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1624文章
21538瀏覽量
600449 -
自動(dòng)化測(cè)試
+關(guān)注
關(guān)注
0文章
199瀏覽量
26873 -
python
+關(guān)注
關(guān)注
54文章
4756瀏覽量
84283
原文標(biāo)題:“軟為硬用”—基于python的自動(dòng)化測(cè)試
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論