Robot测试接收的unicode与从python关键字发送的不同

2024-05-15 07:35:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个robot测试,它调用python函数递归地列出给定路径中的文件。该函数返回所有完整路径的列表,如下所示:

@keyword('List Files Recursively')
def list_files_rec_filtered(path, regexp_filter="^(?!\.).+$"):
    file_list = []
    filename_filter = re.compile(regexp_filter)
    for root, dirs, files in os.walk(path, topdown=True):
        for file in files:
            if filename_filter.match(file):
                file_list.append(os.path.abspath(os.path.join(root,file)))
    return file_list

当从robot关键字调用此函数时,我可以看到得到的结果与python中列表中的结果不同。你知道吗

${files} = file_utils.List Files Recursively  ${path}  ${FILE_TYPES}

我有一个文件,它在返回之前的名称中有ジ(U+30B7,U+3099),但是返回的值是ジ(U+30B8)。我从robot测试的日志文件中提取了这两个字符,第一个是我用python的print()生成的调试消息,第二个是robots自己的TRACE Return:值。你知道吗


Tags: 文件path函数路径列表osrobotfiles
1条回答
网友
1楼 · 发布于 2024-05-15 07:35:11

我知道是因为APFS。Robot将Unicode字符串规范化为NFC,但是Python使用它从APFS获得的NFD。没有真正的解决办法,只有变通办法。苹果需要修复APFS bug如何处理NFC/NFD冲突,如下所示:https://eclecticlight.co/2017/04/06/apfs-is-currently-unusable-with-most-non-english-languages/-几乎OSX上的每个应用程序都会受到此影响,包括Finder和Preview。你知道吗

相关问题 更多 >