自动化测试框架unittes详解

描述

  从事FPGA开发无论是仿真还是上板验证,总少不了各种各样的case遍历,手动执行起来就太麻烦了。尤其像从事FPGA加速行业来说,CPU与FPGA版卡的交互和测试基本基于PCIe来实现,而软件有大量的测试框架,不妨“软为硬用”。这里就基于python的自动化测试框架unittest来实现一个简单的自动化上板测试流程,同时自动生成html测试报告。

  unittest

  unittest是python自带的测试框架,其主要由TestCase、unitunittest、TestRunner三大部分,详细的介绍可参考该文档链接。

  通过unittest,可以很快的实现一个自动化测试的case集,如下简单的demo:

FPGA

    执行结果:

FPGA

     基于unittest,在日常工作中调试FPGA可以很容易把测试集给组织起来,而不必每次都手动执行。

  html report

  unittest的测试结果除了控制台输出外也可以存储至文件中,但相对来讲始终不如html报告更清晰些。这里采用HTMLTestRunner来实现,其为开源源代码,可通过下面的链接获取:

  将HTMLTestRunner.py下载下来后即可以将代码保存在python的lib库中,也可以放在测试代码的工程目录下面。如果想放在python的lib库中,可通过在命令行下按照下面的方式找到python的lib目录

  •  
  •  
  •  
  •  
  •  
  •  

	

IT-C02YV1UELVDL:chain xxx$ pythonPython 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 darwinType "help", "copyright", "credits" or "license" for more information.>>> import sys>>> print(sys.path)

    放在其打印输出的任何一个目录下即可。

    其使用方式如下demo所示:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
#!/usr/bin/python# -*- coding: UTF-8 -*-import unittestimport sysfrom HTMLTestRunner import HTMLTestRunnerdef 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的测试报告,可通过浏览器打开:

FPGA

    针对python3环境的使用,可通过下方阅读原文方式来查看修改方式。

  写在最后

  如果选用基于cocotb来进行代码仿真,也可采用这种形式来生成自动化测试报告。

  原文标题:“软为硬用”—基于python的自动化测试

  文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

  审核编辑:汤梓红


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分