开源 -模糊接口测试框架

作者: 望月成三人 | 来源:发表于2018-06-30 17:14 被阅读4次

说明

  • 开源地址
  • python 3.4+ window7
  • excel管理用例
  • 邮件发送测试结果
  • 基于pict模糊测试

用法

不使用模糊测试

  • 首先电脑需要配置python3.4的环境
  • 点击lib目录下的install.bat安装依赖文件
  • 维护Report目录下的api.xlsx写入接口测试
  • 点击Runner.py的start.bat,或者python runner.py
  • 查看测试报告Report目录下的report.xlsx

使用模糊测试

  • 点击lib目录下的install_pict.bat进行依赖文件安装,会自动关闭explorer
  • 打开Setting目录下的Config.ini设置为True
  • 模糊测试现在只支持对每个参数的错误,删除的场景,可以自行扩展
  • 模糊测试暂不支持检查点

报告

  • 维护用例


  • 正常测试


  • 启用pict后的异常场景


其他

需要登录

  • 接口测试需要登录返回的一系列数据,如果token,session等等,打开BaseRunner.py
  • 经过setUpClass传递给各个接口
def get_session():
    req = requests.session()
    url = ""
    data = {}
    req.post(url, data, verify=False)
    return req


class ParametrizedTestCase(unittest.TestCase):
  

    def __init__(self, methodName='runTest', param=None):
        super(ParametrizedTestCase, self).__init__(methodName)

    @classmethod
    def setUpClass(cls):
        cls.rq = get_session() # 登录后的session
        pass
  • 在TestCases目录中的Api.py中接受登录后的session,并传给BaseReq.py中进行修改

class ApiTest(ParametrizedTestCase):
    def test_api(self):
        ls = read_excel(Element.API_FILE)
        # self.req 就是得到了登录后的信息session 
        Config().config_req(ls,self.req)

    @classmethod
    def setUpClass(cls):
        super(ApiTest, cls).setUpClass()
        

pict生成的异常场景

  • 在BaseParams.py中的__param_format函数生成异常场景,根据需要自行扩展
 def __param_format(self, key):
        param_type = {
            str: lambda: str(uuid.uuid1()),
            list: lambda: [],
            dict: lambda: {}
        }
        return param_type[type(key)]()

检查点说明

  • 在启用pict的模糊测试后,不会对检查点进行检查
  • 现在支持的检查点为:
    • {"id":11,"code":2222} 检查点可以设置为:{"code":22}
    • {"code":1,data:[{"id": "123"}, {}]} 检查点可以设置为:{"id":123}
  • 如果检查点不够用可以自行扩展,打开BaseReq.py中的__check函数:
    def __check(self, hope, res):
        hope = json.loads(hope)
        fact = json.loads(res)
        for items in fact:
            if type(fact[items]) == list:
                for item in fact[items]:
                    for k in hope:
                        if item.get(k, "") == hope[k]:
                            return "通过"
            if type(fact[items]) == dict:
                for k in hope:
                    if fact[items].get(k, "") == hope[k]:
                        return "通过"
            for k in hope:
                if fact.get(k, "") == hope[k]:
                    return "通过"
        return "失败"

相关文章

网友评论

本文标题:开源 -模糊接口测试框架

本文链接:https://www.haomeiwen.com/subject/ogztuftx.html