单元测试十:自动化测试示例二

自动生成基于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)    收藏  举报

导航