Пример #1
0
    def run(self, request, pk=None):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data
        env_id = datas.get('env_id')  # 获取环境变量env_id
        env = Envs.objects.get(id=env_id)

        # 创建测试用例所在目录名
        testcase_dir_path = os.path.join(
            settings.SUITES_DIR,
            datetime.strftime(datetime.now(), "%Y%m%d%H%M%S%f"))
        if not os.path.exists(testcase_dir_path):
            os.mkdir(testcase_dir_path)

            module_objs = Modules.objects.filter(project=instance)
        if not module_objs.exists():  # 如果此项目下没有接口, 则无法运行
            data_dict = {"msg": "此项目下无接口, 无法运行!"}
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)

        for inter_obj in module_objs:
            testcase_objs = Testcases.objects.filter(module=inter_obj)

            for one_obj in testcase_objs:
                common.generate_testcase_files(one_obj, env, testcase_dir_path)

        # 运行用例
        return common.run_testcase(instance,
                                   testcase_dir_path,
                                   request.data.get('is_email'),
                                   email=request.user.email)
Пример #2
0
 def run(self, request, *args, **kwargs):
     testsuit = self.get_object()
     serializer = self.get_serializer(instance=testsuit, data=request.data)
     serializer.is_valid(raise_exception=True)
     # 此时的data为校验后的数据
     datas = serializer.validated_data
     env_id = datas.get('env_id')
     # 将文件夹时间戳处理化
     testcase_dir_path = os.path.join(
         SUITES_DIR,
         datetime.strftime(datetime.now(), '%Y-%m-%d_%H.%M.%S_%f'))
     os.mkdir(testcase_dir_path)
     # 获取环境变量对象
     env_obj = Envs.objects.get(id=env_id)
     # 从include中获取运行接口id
     include = eval(testsuit.include)
     if not include:
         data = {'detail': '此套件下无接口,无法运行'}
         return Response(data, status=status.HTTP_400_BAD_REQUEST)
     # 获取套件下所有接口
     for interface_id in include:
         testcase_list = Testcases.objects.filter(interface_id=interface_id)
         for case_obj in testcase_list:
             common.generate_testcase_files(case_obj, env_obj,
                                            testcase_dir_path)
     return common.run_testcase(testsuit, testcase_dir_path)
Пример #3
0
    def run(self, request, pk=None):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data
        env_id = datas.get('env_id')  # 获取环境变量env_id
        env = Envs.objects.get(id=env_id)

        # 创建测试用例所在目录名
        testcase_dir_path = os.path.join(
            settings.SUITES_DIR,
            datetime.strftime(datetime.now(), "%Y%m%d%H%M%S%f"))
        if not os.path.exists(testcase_dir_path):
            os.mkdir(testcase_dir_path)

        include = eval(instance.include)
        if len(include) == 0:
            data_dict = {"detail": "此套件下未添加用例, 无法运行!"}
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)

        # 将include中的接口id转化为此接口下的用例id
        include = get_testcases_by_interface_ids(include)
        for testcase_id in include:
            testcase_obj = Testcases.objects.filter(id=testcase_id).first()
            if testcase_obj:
                common.generate_testcase_files(
                    testcase_obj, env, testcase_dir_path)  # 传入接口对象,环境 ,用例目录

        return common.run_testcase(instance, testcase_dir_path)
Пример #4
0
    def run(self, request, pk=None):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data

        env_id = datas.get('env_id')
        # 指定测试文件存放目录 suites+时间
        testcase_dir_path = os.path.join(
            settings.SUITES_DIR,
            datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f'))
        # 创建文件夹
        if not os.path.exists(testcase_dir_path):
            os.mkdir(testcase_dir_path)
        # 获取环境
        env = Envs.objects.filter(id=env_id, is_delete=False).first()
        interface_objs = Interfaces.objects.filter(is_delete=False,
                                                   project=instance)
        if not interface_objs.exists():  #如果项目下没有接口则无法运行
            data_dict = {"detail": "此项目下无接口,无法运行!"}
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)
        for inter_obj in interface_objs:
            testcase_objs = Testcases.objects.filter(is_delete=False,
                                                     interface=inter_obj)

            for one_obj in testcase_objs:

                # 生成yaml用例文件
                common.generate_testcase_files(one_obj, env, testcase_dir_path)
        # 运行用例
        return common.run_testcase(instance, testcase_dir_path)
Пример #5
0
    def run(self, request, pk=None):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data
        env_id = datas.get('env_id')  # 获取环境变量env_id
        env = Envs.objects.get(id=env_id)

        # 创建测试用例所在目录名
        testcase_dir_path = os.path.join(
            settings.SUITES_DIR,
            datetime.strftime(datetime.now(), "%Y%m%d%H%M%S%f"))
        if not os.path.exists(testcase_dir_path):
            os.makedirs(testcase_dir_path)

        testcase_objs = Testcases.objects.filter(interface=instance)
        if not testcase_objs.exists():  # 如果此接口下没有用例, 则无法运行
            data_dict = {"detail": "此接口下无用例, 无法运行!"}
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)

        for one_obj in testcase_objs:
            common.generate_testcase_files(
                one_obj, env, testcase_dir_path)  # 传入接口对象,环境 ,用例目录

        # 运行用例
        return common.run_testcase(instance, testcase_dir_path)
Пример #6
0
    def run(self, request, *args, **kwargs):
        project = self.get_object()
        serializer = self.get_serializer(instance=project, data=request.data)
        serializer.is_valid(raise_exception=True)
        # 此时的data为校验后的数据
        datas = serializer.validated_data
        env_id = datas.get('env_id')
        # 将文件夹时间戳处理化
        testcase_dir_path = os.path.join(SUITES_DIR, datetime.strftime(datetime.now(), '%Y-%m-%d_%H.%M.%S_%f'))
        os.mkdir(testcase_dir_path)
        # 获取环境变量对象
        env_obj = Envs.objects.get(id=env_id)
        # 获取项目下所有接口
        interface_objs = Interfaces.objects.filter(project=project)

        if not interface_objs.exists():
            data = {
                'detail': '此项目下无接口,无法运行'
            }
            return Response(data, status=status.HTTP_400_BAD_REQUEST)

        for interface_obj in interface_objs:
            testcase_objs = Testcases.objects.filter(interface=interface_obj)
            for case_obj in testcase_objs:
                common.generate_testcase_files(case_obj, env_obj, testcase_dir_path)
        # 运行用例
        return common.run_testcase(project, testcase_dir_path)
Пример #7
0
    def run(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid()
        datas = serializer.validated_data

        env_id = datas.get('env_id')
        testcase_dir_path = os.path.join(settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f'))
        if not os.path.exists(testcase_dir_path):
            os.mkdir(testcase_dir_path)

        # first()返回queryset查询集第一项
        env = Envs.objects.filter(id=env_id, is_delete=False).first()
        # 项目下所有接口
        testcase_objs = Testcases.objects.filter(is_delete=False, interface=instance)

        if not testcase_objs.exists():
            data_dict = {
                'detail': '此接口下没有用例,无法运行'
            }
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)

        for one_obj in testcase_objs:
            common.generate_testcase_files(one_obj, env, testcase_dir_path)

        # 运行用例
        return common.run_testcase(instance, testcase_dir_path)
Пример #8
0
    def run(self, request, pk=None):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data

        env_id = datas.get('env_id')
        # 指定测试文件存放目录 suites+时间
        testcase_dir_path = os.path.join(
            settings.SUITES_DIR,
            datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f'))
        # 创建文件夹
        if not os.path.exists(testcase_dir_path):
            os.mkdir(testcase_dir_path)
        # 获取环境
        env = Envs.objects.filter(id=env_id, is_delete=False).first()
        include = eval(instance.include)
        if len(include) == 0:
            data_dict = {"detail": "此套件下无接口,无法运行!"}
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)
        # 将include中得接口id转化位此接口得用例ID
        include = get_testcases_by_interface_ids(include)

        for testcase_id in include:
            testcase_obj = Testcases.objects.filter(is_delete=False,
                                                    id=testcase_id).first()

            if testcase_obj:
                # 生成yaml用例文件
                common.generate_testcase_files(testcase_obj, env,
                                               testcase_dir_path)
        # 运行用例
        return common.run_testcase(instance, testcase_dir_path)
Пример #9
0
    def run(self, request, pk=None):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data
        env_id = datas.get('env_id')

        #创建测试用例所在目录名
        testcase_dir_path = os.path.join(
            settings.SUITES_DIR,
            datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f'))

        if not os.path.exists(testcase_dir_path):
            os.mkdir(testcase_dir_path)

        env = Envs.objects.filter(id=env_id, is_delete=False).first()
        interface_objs = Interfaces.objects.filter(is_delete=False,
                                                   project=instance)

        if not interface_objs.exists():
            data_dict = {'detail': '此项目下无接口,无法运行'}
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)

        for inter_obj in interface_objs:
            testcase_objs = Testcases.objects.filter(is_delete=False,
                                                     interface=interface_objs)

            for one_obj in testcase_objs:
                common.generate_testcase_files(one_obj, env, testcase_dir_path)

        return common.run_testcase(instance, testcase_dir_path)
Пример #10
0
 def run(self, request, *args, **kwargs):
     testcase = self.get_object()
     serializer = self.get_serializer(instance=testcase, data=request.data)
     serializer.is_valid(raise_exception=True)
     # 此时的data为校验后的数据
     datas = serializer.validated_data
     env_id = datas.get('env_id')
     # 将文件夹时间戳处理化
     testcase_dir_path = os.path.join(SUITES_DIR, datetime.strftime(datetime.now(), '%Y-%m-%d %H.%M.%S %f'))
     os.mkdir(testcase_dir_path)
     # 获取环境变量对象
     env_obj = Envs.objects.get(id=env_id)
     # 生成yaml用例文件
     common.generate_testcase_files(testcase, env_obj, testcase_dir_path)
     # 运行用例,返回报告
     return common.run_testcase(testcase, testcase_dir_path)
Пример #11
0
    def run(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data
        env_id = datas.get('env_id')
        testcase_dir_path = os.path.join(settings.SUITES_DIR, datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f'))
        os.mkdir(testcase_dir_path)

        env = Envs.objects.filter(id=env_id, is_delete=False).first()

        #生成yaml用例文件
        common.generate_testcase_files(instance, env, testcase_dir_path)

        #运行用例
        return common.run_testcase(instance, testcase_dir_path)
Пример #12
0
    def run(self, request, *args, **kwargs):
        # 1. 获取模型类对象
        instance = self.get_object()

        # 2. 校验
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        datas = serializer.validated_data
        env = Envs.objects.get(id=datas.get('env_id'))

        # 3. 生成yaml测试用例文件
        testcase_dir_path = os.path.join(settings.SUITES_DIR,
                                         datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f'))

        common.generate_testcase_files(instance, env, testcase_dir_path)    # 传入接口对象,环境 ,用例目录
        # 4. 运行用例
        return common.run_testcase(instance, testcase_dir_path)
Пример #13
0
    def run(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid()
        datas = serializer.validated_data

        env_id = datas.get('env_id')
        testcase_dir_path = os.path.join(
            settings.SUITES_DIR,
            datetime.strftime(datetime.now(), '%Y%m%d%H%M%S%f'))
        if not os.path.exists(testcase_dir_path):
            os.mkdir(testcase_dir_path)

        # first()返回queryset查询集第一项
        env = Envs.objects.filter(id=env_id, is_delete=False).first()

        include = eval(instance.include)

        if len(include) == 0:
            data_dict = {'detail': '此套件下未添加用例,无法运行'}
            return Response(data_dict, status=status.HTTP_400_BAD_REQUEST)

        # 将include中的接口id转换为此接口下的id
        include = get_testcases_by_interface_ids(include)

        for testcase_id in include:
            testcase_objs = Testcases.objects.filter(is_delete=False,
                                                     id=testcase_id).first()

            if testcase_objs:
                # 生成yml文件
                common.generate_testcase_files(testcase_objs, env,
                                               testcase_dir_path)

        # 运行用例
        return common.run_testcase(instance, testcase_dir_path)