ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

闭包思维自动生成unittest 接口测试用例脚本

2021-06-29 09:58:13  阅读:131  来源: 互联网

标签:闭包 __ unittest apidata token 测试用例 Test data self


感谢一下群里大佬们的踊跃探讨。结合了一下unittest,整理如下:
对于n条测试用例,还需要写满篇的test_1 ,test_2么?
显然不需要了。人只需要在表中写好要测试的接口的名字,参数即可。
如图:这里写图片描述

具体代码:

class Test(unittest.TestCase):
    '测试类'
    token_1 = token_emba('12012341006', '123456') #类变量
    def begin_req(self,apidata):
        u'获取部门列表'
        # print apidata
        if apidata[1] == ['']:
            data = eval(apidata[0])()
        elif apidata[1] != ['']:
            data = eval(apidata[0])(apidata[1])  # 输入要测试的数据,data=(mode,url,body),
        back = json.loads(req(data, self.token_1)['res_body'])  # 获取实际返回值,需要传入token的话,请req(data,token)
        YQ = 200  # 输入预期的值
        SJ = back['code']  # 设置实际返回,如果需要传入TOKEN等header,请务必填写!
        self.assertEqual(SJ, YQ, error_code(SJ, YQ))

def demo(apidata):
    def tool(self):
        Test.begin_req(self,apidata)
    setattr(tool, '__doc__', u'测试%s' % str(apidata[0]))
    return tool

def testall(apidata):
    for i in range(len(apidata)):
     setattr(Test,'test_'+str(i+1),demo(apidata[i]))



if __name__ == "__main__":
    fname = './case_2.xls'
    Apidata = []  #设置接口函数名
    SZ = xlrd.open_workbook(fname)
    sz = SZ.sheet_by_index(0)
    for i in range(1,sz.nrows):
        par = str(sz.cell_value(i,1)).split(',')
        Apidata.append([sz.cell_value(i,0),par])

    testall(Apidata)
    suit = unittest.makeSuite(Test)
    filename = u'/'.join(os.getcwd().split('/')[:-2]) + u'/Report/业务逻辑接口测试报告-test.html'
    fp = file(filename, 'wb')
    runner = HTMLTestRunner(fp, title=u'测试服新接口测试', description=u'用例执行报告', fname=filename.split('/')[-1])
    runner.run(suit)

其中有很多自己封装的函数,贴出来就是给大家看一个思路。我们的原则是尽量不经常因为用例 的增删改查 需要去修改代码。
也就是写用例用表,看报告用html或其他文件。
如图,是测试报告
这里写图片描述

有不明白的欢迎留言讨论。

 

标签:闭包,__,unittest,apidata,token,测试用例,Test,data,self
来源: https://blog.51cto.com/u_15282986/2952256

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有