一键式创建GTest测试平台

适用于C++ GTest测试平台搭建。直接上python脚本。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import argparse
import os
import platform
import subprocess
from xml.etree import ElementTree as ET


default_root_path = "d:\\test\\UTtest"


class DeveloperTestTool:
    '''
    usage:
    windows:
        python create_ohos_dev_self_test_exec_env.py -w d:\\test # 指定路径配置
        or
        python3 create_ohos_dev_self_test_exec_env.py # 默认路径配置.
    linux:
        python3 create_ohos_dev_self_test_exec_env.py -w /home # 指定路径配置
        note: no default path in linux
    '''
    def __init__(self, root_path):
        self.current_os = platform.system()
        if self.current_os == "Windows":
            self.root_path = default_root_path if len(root_path.strip()) == 0 else root_path
        elif self.current_os == "Linux":
            self.root_path = root_path

        self.testcase_path = os.path.join(self.root_path, "testcase", "tests")

    @staticmethod
    def git_clone(remote_url, local_path):
        subprocess.run(["git", "clone", remote_url, local_path])

    def config_developer_test(self):
        download_path = os.path.join(self.root_path, "developer_test")
        remote_url = "https://gitee.com/openharmony/testfwk_developer_test.git"
        DeveloperTestTool.git_clone(remote_url, download_path)

    def config_xdevice(self):
        download_path = os.path.join(self.root_path, "xdevice")
        remote_url = "https://gitee.com/openharmony/testfwk_xdevice.git"
        DeveloperTestTool.git_clone(remote_url, download_path)

    def update_user_config_xml(self):
        if self.current_os == "Windows":
            config_xml_path = self.root_path + "\\developer_test\\config\\user_config.xml"
        elif self.current_os == "Linux":
            config_xml_path = os.path.join(self.root_path, "developer_test", "config", "user_config.xml")
        else:
            print("This is neither Windows nor Linux.")
            return

        tree = ET.parse(config_xml_path)
        root = tree.getroot()
        node = root.find("test_cases").find("dir")
        node.text = self.testcase_path
        tree.write(config_xml_path, encoding="utf-8", xml_declaration=True)

    def done(self):
        self.config_developer_test()
        self.config_xdevice()
        self.update_user_config_xml()
        pass


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("--work_path", "-w", type=str, default=default_root_path, help="work path")
    args = parser.parse_args()
    return args


def main():
    args = get_args()
    test_tool = DeveloperTestTool(args.work_path)
    if not os.path.exists(test_tool.root_path):
        os.makedirs(test_tool.root_path)

    if not os.path.exists(test_tool.testcase_path):
        os.makedirs(test_tool.testcase_path)

    test_tool.done()


if __name__ == "__main__":
    main()

目录层级:

.
├── developer_test
├── testcase
└── xdevice

developer_test\config\user_config.xml文件中测试用例路径已经更新,请把测试用例目录直接放到该配置指向的路径下:
在这里插入图片描述
使用说明:

  • 指令格式请参见脚本
  • 可以修改默认安装路径(windows平台)。linux下是没有默认安装路径的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/775732.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文件扫描pdf怎么弄?5个简易高效的文件扫描方法

在繁忙的工作中,我们常常需要将纸质文件快速转换为电子文档,以便于编辑、存储或分享。 无论是合同、报告还是笔记,将这些纸质文件转换为Word格式,不仅能提高工作效率,还能确保信息的安全备份。然而,面对市…

Web3 ETF的主要功能

Web3 ETF的主要功能可以概括为以下几点,Web3 ETF仍是一项新兴投资产品,其长期表现仍存在不确定性。投资者在投资Web3 ETF之前应仔细研究相关风险,并做好充分的风险评估。北京木奇移动技术有限公司,专业的软件外包开发公司&#xf…

如何爱上阅读及阅读的意义有哪些?

第一个是“情绪决定”,比如看到人家健身,摄影,画画时,自己的肾上腺素开始飙升,马上表示自己也想做; 第二个是“理智决定”,理智决定同样表示想要一样东西,但表示人必定已经想好了为…

[pwn]静态编译

静态编译 1. 栈足够大的情况下 程序在ida打开后,左侧的函数栏目没有红色(系统调用的函数),而只有一些静态函数,通常这类文件的大小会必普通的pwn题程序要大得多。 这种静态编译的题没有调用库函数,也就没…

Prometheus + Grafana 监控系统-PrometheusAlert安装与配置指南

背景 Grafana 目前对国内主流的消息通知渠道兼容性一般,因此可以考虑结合使用国产的 PrometheusAlert PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus、Zabbix,日志系统Graylog2,Graylog3、数据…

华为云生态和快速入门

华为云生态 新技术催生新物种,新物种推动新生态 数字技术催生各类运营商去重塑并颠覆各行业的商业模式 从业务层面看,企业始终如一的目标是业务增长和持续盈利,围绕这些目标衍生出提质、增效、降本、安全、创新和合规的业务诉求&#xff0c…

树形结构C语言的实现

一.什么是树: 树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构,所以这种结构多可以递归的表示。经典数据结构中的各种树状图是一种典型的树形结构:一棵树可以简单的表示为根,左子树,右子树。左子树…

Android HWASAN使用与实现原理

一、背景 为了提前检测出Android User Sapce的app或native进程的内存错误问题,帮助研发定位与分析这些问题,基于Android 14版本上对HWASAN做了调研分析。 二、ASAN介绍 HWASAN是在ASAN的基础上做了拓展,因此在介绍HWASAN之前先了解下ASAN.…

电源设计改进稳定度和误差放大器的解决方案

电池,变压器,电源和转换器会不断受到能量损失的影响。结果,负载上的输出电压会降低。温度是性能的另一个关键特征。通过创建误差放大系统,可以在任何类型的负载下稳定输出电压。 稳压二极管稳定器 使用功率晶体管以及电流放大器…

自己动手实现语音识别

声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。 通过傅里叶变换,可以将时间域的声音函数分解为一系列不同频率的正弦函数的叠加,通过频率谱线的特殊分布,建立音频内容和文本的对应关系,以此作为模型训练的基础。 语音mfc…

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看 摘要 本文主要介绍了大学生参加电子计算机类比赛(电赛、光电设计大赛、计算机设计大赛、嵌入式芯片与系统设计大赛等比赛)的流程和涉及到的知识…

【Portswigger 学院】文件上传

教程和靶场来源于 Burpsuite 的官网 Portswigger:File upload vulnerabilities - PortSwigger 原理与危害 很多网站都有文件上传的功能,比如在个人信息页面允许用户上传图片作为头像。如果网站应用程序对用户上传的文件没有针对文件名、文件类型、文件内…

解决中型组织三个人力资源基础问题的方法

中型企业 (通常在700 - 5000名员工之间)是从中小企业发展起来的,但不称为大型企业。虽然个别市场取得了成功,但到2023年,中端市场经历了一个艰难的结局,受到了更广泛的经济挑战的影响。然而,它仍然具有灵活性和乐观性&…

24_嵌入式系统输入输出设备

目录 GPIO原理与结构 A/D接口基本原理 A/D接口原理 A/D转换的重要指标 D/A接口基本原理 D/A接口原理 DAC的分类 D/A转换器的主要指标 键盘接口基本原理 键盘接口原理 用I/O口实现键盘接口 显示接口基本原理 基本结构和特点 基本原理 LCD种类 市面上出售的LCD的类…

dtpay聚合支付系统在跨境支付场景中技术及业务方案

1 什么是跨境支付 我们从两个维度来分析什么是跨境支付,第一个维度我们从资金流向分析,国内的消费者在境外进行消费对于国内资金流来说这属于资金流出,这是跨境支付的第一种应用场景。第二个场景国外游客在国内进行消费,这属于资…

【ECCV 2024】首个跨模态步态识别框架:Camera-LiDAR Cross-modality Gait Recognition

【ECCV 2024】首个跨模态步态识别框架:Camera-LiDAR Cross-modality Gait Recognition 简介:主要方法:实验结果: 论文:https://arxiv.org/abs/2407.02038 简介: 步态识别是一种重要的生物特征识别技术。基…

【论文阅读】-- Strscope:不规则测量的时间序列数据的多尺度可视化

Stroscope: Multi-Scale Visualization of Irregularly Measured Time-Series Data 摘要1 引言2相关工作2.1(大型)时间序列数据可视化2.2 事件序列数据可视化2.3 评价 3问题分析3.1 数据集3.2 场景——现状3.3 设计流程3.4 设计原理 4 涟漪图&#xff1a…

十大排序:插入/希尔/选择/堆/冒泡/快速/归并/计数/基数/桶排序 汇总(C语言)

目录 前言非线性时间比较类插入排序(1) 直接插入排序(2) 希尔排序 选择排序(3) 选择排序优化版(4) 堆排序 交换排序(5) 冒泡排序(6) 快速排序hoare版本挖坑版前后指针版非递归版 归并排序(7) 归并排序递归版非递归版 线性时间比较类(8) 计数排序基数排序与桶排序 总结 前言 在计…

昇思25天学习打卡营第16天|文本解码原理——以MindNLP为例

在大模型中,文本解码通常是指在自然语言处理(NLP)任务中使用的大型神经网络模型(如Transformer架构的模型)将编码后的文本数据转换回可读的原始文本的过程。这些模型在处理自然语言时,首先将输入文本&#…

自闭症儿童的治疗方法有哪些?

身为星贝育园自闭症儿童康复学校的资深教育者,我深知自闭症谱系障碍(ASD)儿童的教育与治疗需要一个全面、个性化的方案。在星贝育园,我们致力于为孩子们提供一个充满爱与理解的环境,采用多种科学验证的教育方法&#x…