gpt4 book ai didi

python - 我应该如何对 SWIG 生成的 python 包装器进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:56 25 4
gpt4 key购买 nike

我需要使用 SWIG 为库创建 python 包装器并为其编写单元测试。我不知道该怎么做。我对这个问题的第一个看法是使用与我为其编写包装器的那些库具有相同接口(interface)的模拟动态库。这个模拟库可以记录每次调用或返回一些生成的数据。可以通过单元测试检查此日志和生成的数据。

最佳答案

我遇到过很多情况,我使用 SWIG 生成的包装器对库进行单元测试,但我想您要求的是包装器本身的单元测试。

我追求的测试包装器的方式,比如 mylib 本身如下:

Properties:对于每个公开了属性的类 MyClass,我使用 MyClass._swig_getmethods__ 列出所有可以修改的属性。我验证了正确数量的属性可用并且它们按预期工作

# Filter out builtin_function_type
getmethods = {k: v for k,v in mylib.MyClass.__swig_getmethods__.iteritems() if type(v) != types.BuiltinFunctionType}
# Filter out lambda functions (constructors)
getmethods = {k: v for k,v in getmethods.iteritems() if v.func_name != '<lambda>'}.keys()

nGetSuccess = 0
testMe = set()
m = mylib.MyClass()
for method in getmethods:
try:
value = eval('m.'+method)
nGetSuccess = nGetSuccess + 1
except Exception as e:
print(e.message)
self.assertEqual(nGetSuccess,len(getmethods))

静态方法

对于静态方法,我已经按名称建立了预期函数的列表,并在 mylib.__dict__ 中搜索它们的存在并调用它们。对于某些方法,我使用了在这里找到的技巧,将 C 结构参数转换为 Python 中的字典,并展示了创建默认结构的可能性,该默认结构可用于测试。

关于python - 我应该如何对 SWIG 生成的 python 包装器进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28543193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com