使用unittest自动生成用例,并生成BeautifulReport

import unittest
from Logic.ComputationalLogic import ComputionalLogic
from BeautifulReport import BeautifulReport
from Common import Basic

class Case(unittest.TestCase):
    global comp
    comp = ComputionalLogic()
    
    def annual_comp(self,apidata):
        """**校验"""
        back = comp.computation_flow(apidata)
        self.assertIn(back, [0,None])
      
def demo(apidata):    #使用闭包,把函数作为返回参数被其他调用
    def tool(self):
        Case.annual_comp(self,apidata)   #每条用例初始化Case类
    setattr(tool, '__doc__', u'%s' % str(apidata))  #替换描述为用例名
    return tool
        
def testall(apidata):   
    nameList = []
    for i in range(len(apidata)):
        name = 'test_' + str(i + 1)    #自增生成用例名
        setattr(Case, name, demo(apidata[i]))    #调用闭包,生成用例
        nameList.append(name)
    return nameList

def suite(Apidata):  
    nameList = testall(Apidata)
    suites = unittest.TestSuite()
    for i in nameList:
        suites.addTest(Case(i))
    return suites
        
if __name__ == '__main__':
    Basic.clearLogging()
    product_data = Basic.GetDataFromYaml('..//Config//Product.yaml')
    case_list = list(product_data.keys())    #把yaml文件中每个键加载为suit
    print(case_list)
    suit = suite(case_list) 
    result = BeautifulReport(suit)
    result.report(filename='测试报告', description='*****报告', log_path='D:/workspace/DeductCompare_New/Report')

相当于往unnittest塞数据:

Case.name = "test_自增"

Case.__doc__ =  "产品名+资方+产品类型"

Case.fun = comp.computation_flow

 

参考原文:https://www.cnblogs.com/fengyca/p/8434630.html

BeautifulReport下载地址: https://github.com/TesterlifeRaymond

感谢上面两位作者

转载于:https://www.cnblogs.com/carlvine/articles/9682197.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值