Skip navigation links
com.auxiliary.tool.common

Class Placeholder

    • Constructor Detail

      • Placeholder

        public Placeholder(String startSign,
                           String endSign)
        构造对象,初始化占位符的起始与结束标志
        Parameters:
        startSign - 占位符起始标志
        endSign - 占位符结束标志
        Since:
        autest 4.2.0
      • Placeholder

        public Placeholder(Placeholder placeholder)
        根据已有的占位符对象,构造新的占位符类对象
        Parameters:
        placeholder - 已有的占位符类对象
        Since:
        autest 4.2.0
    • Method Detail

      • setPlaceholderSign

        public Placeholder setPlaceholderSign(String startSign,
                                              String endSign)
        该方法用于设置占位符的起始与结束标志
        Parameters:
        startSign - 占位符起始标志
        endSign - 占位符结束标志
        Returns:
        类本身
        Since:
        autest 4.2.0
      • getPlaceholderSign

        public String[] getPlaceholderSign()
        该方法用于返回占位符的起始与结束标志,在数组中,第一个元素表示起始标志,第二个元素表示结束标志
        Returns:
        占位符的起始与结束标志
        Since:
        autest 4.2.0
      • setReplaceDepth

        public Placeholder setReplaceDepth(int count)
        该方法用于设置替换占位符的深度(替换次数),避免嵌套替换占位符导致死循环

        该数值主要用在词语嵌套替换时会生效,非嵌套替换或无法被替换的占位符不受该数值的影响。例如,设置占位符起始与结束标志均为“#”符号, 存储占位符“1”的替换内容为“#2#”,存储占位符“2”的替换内容为“#3#”;则当需要替换的内容为“内容:#1#”时:

        1. 第一次替换后,文本变为“内容:#2#”
        2. 第二次替换后,文本变为“内容:#3#”
        3. 第三次替换后,文本变为“内容:4”
        根据以上替换次数,则说明文本的替换深度为3层(3次替换),若设置深度为2,则替换后的文本将返回“内容:#3#”

        注意:深度必须设置大于等于0次(0次则表示不替换),若设置的深度为负数,则不会生效,将沿用上一次设置的值(初次设置为负数时,则使用默认次数,默认次数为10次)

Parameters:
count - 嵌套替换深度
Returns:
类本身
Since:
autest 4.2.0
  • addReplaceFunction

    public Placeholder addReplaceFunction(String regex,
                                          DataFunction function)
    用于添加待替换的词语及相应的替换方法

    该方法允许添加待替换词语的处理方式,在写入用例时,若指定的待替换内容符合此方法指定的正则时,则会使用存储的替换方式, 对词语进行替换。例如,占位符前后标志均为“#”,则:

      @Test
     public void addReplaceWordTest_DataDriverFunction() {
      // 定义词语匹配规则和处理方式,当匹配到正则后,将获取“随机:”后的字母
      // 若字母为“N”,则随机生成两位数字字符串
      // 若字母为“Y”,则随机生成两位中文字符串
      test.addReplaceWord(new DataDriverFunction("随机:[NC]", text -> {
          return "N".equals(text.split(":")[1]) ? RandomString.randomString(2, 2, StringMode.NUM)
                  : RandomString.randomString(2, 2, StringMode.CH);
      }));
    
      // 输出:“内容:53”(两位随机数字)
      System.out.println(test.replaceText("内容:#随机:N#"));
      // 输出:“内容:谁当”(两位随机中文)
      System.out.println(test.replaceText("内容:#随机:C#"));
     }
     

    部分定义方法可调用工具类Functions类获取,以其中一个方法为例,其传参方法为如下:

     DataDriverFunction driverFunction = Functions.randomCarId();
     addReplaceFunction(DataDriverFunction.getRegex(), DataDriverFunction.getFunction());
     

    Parameters:
    regex - 需要替换的内容正则表达式
    function - 替换词语使用的函数
    Returns:
    类本身
    Since:
    autest 4.2.0
  • addReplaceFunction

    public Placeholder addReplaceFunction(Map<String,DataFunction> functionMap,
                                          boolean isRepeatSkip)
    该方法用于添加待替换的词语及相应的替换方法集合

    集合的键为占位符的词语,值为替换的方法,可参考addReplaceFunction(String, DataFunction)的方法添加

    Parameters:
    functionMap - 替换方法集合
    isRepeatSkip - 是否跳过已存储的占位符正则
    Returns:
    类本身
    Since:
    autest 4.2.0
  • getReplaceFunctionMap

    public Map<String,DataFunction> getReplaceFunctionMap()
    该方法用于返回添加待替换的词语及相应的替换方法集合

    集合的键为占位符的词语,值为替换的方法

    Returns:
    替换方法集合
    Since:
    autest 4.2.0
  • clearReplaceFunction

    public Map<String,DataFunction> clearReplaceFunction()
    该方法用于清空添加待替换的词语及相应的替换方法集合
    Returns:
    替换方法集合
    Since:
    autest 4.2.0
  • addReplaceWord

    public Placeholder addReplaceWord(String word,
                                      String replaceWord)
    该方法用于添加待替换的词语及相应的替换内容
    Parameters:
    word - 待替换的占位符词语
    replaceWord - 被替换的内容
    Returns:
    类本身
    Since:
    autest 4.2.0
  • addReplaceWord

    public Placeholder addReplaceWord(Map<String,String> wordMap,
                                      boolean isRepeatSkip)
    该方法用于添加一组待替换的词语及相应的替换内容
    Parameters:
    wordMap - 占位符词语集合
    isRepeatSkip - 是否跳过已存储的占位符词语
    Returns:
    类本身
    Since:
    autest 4.2.0
  • getReplaceWordMap

    public Map<String,String> getReplaceWordMap()
    该方法用于返回当前存储的替换词语集合,修改返回的集合不影响类中存储的集合内容

    返回的集合中,键为占位符词语,值为替换的内容

    Returns:
    替换词语集合
    Since:
    autest 4.2.0
  • clearReplaceWordMap

    public Map<String,String> clearReplaceWordMap()
    该方法用于清空存储的替换词语集合,并返回原始存储的内容
    Returns:
    替换词语集合
    Since:
    autest 4.2.0
    See Also:
    getReplaceWordMap()
  • addPlaceholder

    public Placeholder addPlaceholder(Placeholder placeholder,
                                      boolean isRepeatSkip)
    该方法用于根据已有的占位符类对象,将其替换词语和替换公式复制到当前类对象中
    Parameters:
    placeholder - 占位符类对象
    isRepeatSkip - 是否跳过已存储的占位符词语
    Returns:
    类本身
    Since:
    autest 4.2.0
  • replaceWord

    public String replaceWord(String word)
    该方法用于对需要替换的词语进行转换,输出该词语对应的替换后的内容

    注意:

    1. 传入的词语不能包含占位符的前后标志
    2. 词语无法替换,则返回原始词语
    3. 传入的词语为空串或null时,则按照空串进行返回

    Parameters:
    word - 需要替换的词语
    Returns:
    替换后的内容
    Since:
    autest 4.2.0
  • replaceText

    public String replaceText(String text)
    该方法用于对文本中的占位符进行替换
    Parameters:
    text - 需要替换内容
    Returns:
    替换占位符后的内容
    Since:
    autest 4.2.0
  • sequentialReplaceText

    public String sequentialReplaceText(String text,
                                        boolean isReplaceWordRecycling,
                                        List<String> replaceWordList)
    该方法用于按照文本中占位符的顺序,将替换内容集合逐个对文本中的占位符进行替换
    Parameters:
    text - 待替换文本
    isReplaceWordRecycling - 是否循环替换词语,即当替换词语集合遍历完毕后,若当前仍有未被替换的占位符时,则重新开始遍历替换词语集合
    replaceWordList - 替换词语集合
    Returns:
    替换后的文本
    Since:
    autest 4.3.0
  • getPlaceholderWord

    public List<String> getPlaceholderWord(String text)
    该方法用于提取文本内容中的所有占位符词语,提取的词语不包含占位符起止标志
    Parameters:
    text - 查找占位符的文本
    Returns:
    文本中的占位符词语集合
    Since:
    autest 4.2.0
  • packagePlaceholder

    public String packagePlaceholder(String placeholderWord)
    该方法用于将传入的词语,根据当前存储的占位符起止标志,组装成带起止标志的占位符字符串
    Parameters:
    placeholderWord - 占位符词语
    Returns:
    带起止标志的占位符
    Since:
    autest 4.3.0
  • isContainsPlaceholder

    public boolean isContainsPlaceholder(String text)
    该方法用于判断传入的文本中是否包含占位符

    注意:该方法只判断传入文本中是否包含占位符起止标志,不判断占位符中的内容是否包含在已存储的替换内容中

    Parameters:
    text - 需要判断的文本
    Returns:
    判断结果
    Since:
    autest 4.2.0
  • isExistReplaceContent

    public boolean isExistReplaceContent()
    该方法用于判断当前是否存在需要替换的内容
    Returns:
    是否存在需要替换的内容
    Since:
    autest 4.3.0

Copyright © 2024. All rights reserved.