单元测试十:自动化测试示例二
自动生成基于pyunit的接口测试用例示例
生成用例脚本如下:
#coding=utf-8 import os, sys from string import Template #动态生成单个测试用例函数字符串 def singleMethodCreate(MethodList,interfaceNamePara): code = Template('''\n def test${testcase}(self): u"""${testcaseName}""" start = datetime.datetime.now() results = requests.post(self.url('${interfaceName}'),${businessParas}) result = Frame_Result.ResultProcess(results) print (result) end = datetime.datetime.now() print ("case time:"+str((end-start).microseconds/1000000.0))''') string = code.substitute(testcase=MethodList["testcase"], testcaseName=MethodList["TestcaseName"], interfaceName=interfaceNamePara, businessParas=MethodList["BusinessParas"]) return string #拼接单个的测试用例函数字符串为完整字符串并传回主函数 def methodCreate(MethodParaList,interfaceNamePara): string = "" for MethodPara in MethodParaList: string2 = singleMethodCreate(MethodPara, interfaceNamePara) string = string+string2 return string #生成测试用例类函数字符串 def modelClassCreate(parameters): modelCode=methodCreate(parameters[2],parameters[1]) code = Template('''#coding: utf-8 """ 功能:待执行的接口测试用例 环境:WingIDE5.1.10-1 python3.5.1 用法:通过框架自动触发调用 """ import unittest, requests, datetime, sys from RunCommon import * from RunConfig import * class ${className}(unittest.TestCase): u"""待测试接口:${interfaceName}""" def setUp(self): self.domain = TestcaseConfig.BaseURL def tearDown(self): pass ${model} def url(self, path): return self.domain + path ''') fileStr = code.substitute(className=parameters[0], interfaceName=parameters[1], model=modelCode) f = open(parameters[0]+".py", 'w', encoding='utf-8') f.write(fileStr) f.close() if __name__ == '__main__': ''' 功能:自动生成pyunit框架下的接口测试用例 环境:WingIDE5.1.10-1 python3.5.1 用法:将用户给的参数处理成如下格式,然后调用模块类生成函数,并将参数传入即可 parameters=["Testcase_cartInformation", "/cart/inforinformation", [ {"TestcaseName":"cart_information测试1","BusinessParas":{},"judgePara":"200", "testcase":"CartInformation200"}, {"TestcaseName":"cart_information测试2","BusinessParas":{"aaa":"bbb"},"judgePara":"400", "testcase":"CartInformation400"} ] ] modelClassCreate(parameters) ''' parameters = ["Testcase_cartInformation", "/cart/inforinformation", [ {"TestcaseName": "cart_information测试1", "BusinessParas": {}, "judgePara": "200", "testcase": "CartInformation200"}, {"TestcaseName": "cart_information测试2", "BusinessParas": {"aaa": "bbb"}, "judgePara": "400", "testcase": "CartInformation400"} ] ] modelClassCreate(parameters)
生成的用例文件内容如下:
#coding: utf-8 """ 功能:待执行的接口测试用例 环境:WingIDE5.1.10-1 python3.5.1 用法:通过框架自动触发调用 """ import unittest, requests, datetime, sys from RunCommon import * from RunConfig import * class Testcase_cartInformation(unittest.TestCase): u"""待测试接口:/cart/inforinformation""" def setUp(self): self.domain = TestcaseConfig.BaseURL def tearDown(self): pass def testCartInformation200(self): u"""cart_information测试1""" start = datetime.datetime.now() results = requests.post(self.url('/cart/inforinformation'),{}) result = Frame_Result.ResultProcess(results) print (result) end = datetime.datetime.now() print ("case time:"+str((end-start).microseconds/1000000.0)) def testCartInformation400(self): u"""cart_information测试2""" start = datetime.datetime.now() results = requests.post(self.url('/cart/inforinformation'),{'aaa': 'bbb'}) result = Frame_Result.ResultProcess(results) print (result) end = datetime.datetime.now() print ("case time:"+str((end-start).microseconds/1000000.0)) def url(self, path): return self.domain + path
参考:https://blog.csdn.net/liulinze/article/details/53032448
更多自动测试示例,参考:
一个自动生成接口测试测试用例的项目:https://github.com/TesterlifeRaymond/doraemon
python3.5+selenium3.4自动化测试4_随机组合的用户名和密码登陆:https://blog.csdn.net/qingche456/article/details/73088522
posted on 2018-09-26 19:34 myworldworld 阅读(109) 评论(0) 收藏 举报
浙公网安备 33010602011771号