PyLD测试全攻略:运行W3C官方JSON-LD测试套件并生成EARL报告

发布时间:2026/9/30 2:15:54

PyLD测试全攻略:运行W3C官方JSON-LD测试套件并生成EARL报告 PyLD测试全攻略运行W3C官方JSON-LD测试套件并生成EARL报告【免费下载链接】pyldJSON-LD processor written in Python项目地址: https://gitcode.com/gh_mirrors/py/pyldPyLD是一个用Python编写的JSON-LD处理器支持JSON-LD 1.1规范中的展开expand、压缩compact、扁平化flatten、框架frame、归一化normalize和RDF转换等核心功能。对于新手来说PyLD测试最让人头疼的问题是如何运行W3C官方JSON-LD测试套件验证自己的环境是否正常如何生成机器可读的EARL报告用于CI或互操作性验证本文就为你一步步拆解PyLD测试的完整流程从获取测试套件到生成EARL报告一篇搞定。一、为什么PyLD测试要跑W3C官方测试套件W3C为JSON-LD规范发布了三套官方测试套件它们是判断一个JSON-LD处理器是否合规的黄金标准测试套件对应规范覆盖内容json-ld-apiJSON-LD 1.1 Processing Algorithms and APIexpand、compact、flatten、toRDF、fromRDF等json-ld-framingJSON-LD 1.1 Framingframe框架化normalizationRDF Dataset NormalizationURDNA2015、URGNA2012归一化算法PyLD在tests/runtests.py中定义了一张测试类型表TEST_TYPES把每个W3C测试条目映射到对应的PyLD API调用例如jld:ExpandTest调用jsonld.expandjld:CompactTest调用jsonld.compact。跑一遍官方套件就等于对处理器做了一次全面的体检。✅二、准备工作如何获取W3C官方JSON-LD测试套件官方测试套件以git子模块的方式存放在项目的specifications/目录下共三个子目录specifications/json-ld-api/specifications/json-ld-framing/specifications/normalization/克隆项目后如果子模块为空需要先初始化并更新它们git submodule init git submodule update也可以直接用一条命令更新到最新版本git submodule update --remote --init --recursive 如果子模块没有拉取成功PyLD测试会提示 Test dir not found。确保三个目录里都存在tests/manifest.jsonld文件测试才能正常运行。三、最快的一键运行方法pytest安装测试依赖pytest等见requirements-test.txt后在项目根目录直接执行pytestPyLD通过tests/conftest.py中的参数化机制pytest_generate_tests读取三个测试套件的清单文件manifest.jsonld自动把每个测试用例展开成一个独立的pytest用例再交给tests/test_manifests.py逐个执行。你会在输出中看到形如test_manifest_case[ExpandTest: t0001: ...]的用例名。想顺便查看代码覆盖率项目Makefile里已经写好了make test它等价于pytest --covpyld。四、如何只跑指定的JSON-LD测试套件如果你只想运行某一个套件比如只验证API相关的展开、压缩功能可以用--tests参数指定路径pytest --tests./specifications/json-ld-api/tests多个套件可以多次指定pytest --tests./specifications/json-ld-api/tests --tests./specifications/json-ld-framing/tests--tests参数既支持包含manifest.jsonld的目录也支持单个.jsonld清单文件非常灵活。五、使用原始测试运行器python tests/runtests.py除了pytest项目还保留了原生的命令行测试运行器tests/runtests.py用法同样简单python tests/runtests.py它会自动扫描specifications/下三个套件目录并开始测试。也可以手动指定测试目标python tests/runtests.py ./specifications/json-ld-api/tests它的常用参数如下参数作用-e, --earl file将EARL报告写入指定文件-b, --bail遇到第一个失败用例就立即停止-l, --loader name选择文档加载器requests或aiohttp-n, --number id只运行包含指定测试标识符的用例-v, --verbose打印详细的测试数据六、测试运行的高级技巧6.1 切换远程文档加载器部分测试用例需要远程加载文档PyLD支持两种加载器# 使用 requests 加载器默认 pytest --loaderrequests --tests./specifications/json-ld-api/tests # 使用 aiohttp 异步加载器 python tests/runtests.py -l aiohttp ./specifications/json-ld-api/tests 注意加载器的切换在tests/conftest.py的pytest_configure中完成它会把选中的加载器设置为全局默认文档加载器jsonld._default_document_loader。6.2 只跑单个测试用例调试时可以用--numberpytest或-nruntests.py按测试标识符过滤pytest --numbert0001 --tests./specifications/json-ld-api/tests6.3 失败即停止在长测试套件中想快速定位第一个问题用-bpython tests/runtests.py -b6.4 离线运行机制你可能好奇测试套件里的输入文件很多引用的是W3C的远程URL离线怎么跑答案在tests/runtests.py的LOCAL_BASES和create_document_loader中——运行器会把https://w3c.github.io/json-ld-api/tests等远程基址映射到本地文件从而实现离线、确定性的测试无需网络。七、PyLD测试覆盖了哪些功能点从tests/runtests.py的TEST_TYPES可以看到PyLD测试覆盖了9类测试jld:ExpandTest文档展开jld:CompactTest文档压缩jld:FlattenTest文档扁平化jld:FrameTest文档框架化jld:ToRDFTestJSON-LD转RDF三元组jld:FromRDFTestRDF三元组转JSON-LDjld:NormalizeTest文档归一化rdfn:Urgna2012EvalTest/rdfn:Urdna2015EvalTest两种规范化算法每个测试用例都区分正向测试jld:PositiveEvaluationTest、负向测试jld:NegativeEvaluationTest和语法测试jld:PositiveSyntaxTest。负向测试会校验库是否抛出符合规范的错误码如jsonld.JsonLdError的code字段确保错误处理行为也与规范一致。八、如何生成EARL报告关键一步EARLEvaluation and Report Language评估与报告语言是W3C制定的机器可读测试结果格式。生成EARL报告是PyLD测试最实用的能力之一常用于CI流水线或与其他实现做互操作性对比。8.1 使用pytest生成EARL报告pytest --earl./earl-report.json8.2 使用原始运行器生成EARL报告python tests/runtests.py -e ./earl-report.json运行结束后项目会在指定路径输出一个JSON-LD格式的报告文件。报告的内容由tests/runtests.py中的EarlReport类生成主要包含项目元信息软件名称、版本号从lib/pyld/__about__.py读取、许可证、开发者信息doap命名空间逐条断言每个测试用例对应一条earl:Assertion记录了测试标识符、断言时间以及结果earl:passed通过或earl:failed失败{ type: earl:Assertion, earl:test: ...#t0001, earl:result: { type: earl:TestResult, dc:date: 2026-08-19T00:00:00Z, earl:outcome: earl:passed } } 在pytest模式下EARL报告由tests/conftest.py的pytest_runtest_makereport钩子逐用例记录跳过的用例skipped不会写入报告避免污染断言结果。九、如何读懂PyLD测试结果测试输出中会看到几类状态含义如下✅passed用例通过结果与预期一致❌failed用例失败运行器会打印 EXPECTED 与 ACTUAL 的对比见assert_results_equal⏭skipped用例被跳过可能是规范版本不适用如specVersion: json-ld-1.0或已知不支持⏳pending标记为待定的用例预期失败。如果它意外通过了会报出 pending positive test passed 提醒你更新状态比较结果时PyLD测试采用顺序无关的等价比较equal_unordered数组中元素的顺序不影响判定符合JSON-LD测试套件的语义。十、总结至此你已经掌握了PyLD测试的完整链路获取套件git submodule init git submodule update一键运行pytest或python tests/runtests.py定向测试--tests指定套件--loader切换加载器生成报告--earl./earl-report.json输出EARL报告整个测试基础设施集中在tests/目录下tests/runtests.py负责清单解析与用例执行逻辑tests/conftest.py负责pytest参数化与EARL记录tests/test_manifests.py作为pytest入口把两者衔接起来。无论你是想验证环境、贡献代码还是做互操作性测试这套流程都能让你快速上手。现在就打开终端跑一次PyLD测试生成属于你的第一份EARL报告吧【免费下载链接】pyldJSON-LD processor written in Python项目地址: https://gitcode.com/gh_mirrors/py/pyld创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/26 12:29:53

2026年答辩PPT生成用哪款?4款工具实测清单

论文终稿提交后,答辩PPT成了压在心口的石头。页数要求、内容逻辑、图表规范,哪一样都耗时间。这篇直接实测4款答辩PPT生成工具,从生成速度、内容质量、图表处理到降重降AI能力逐项拆,看完你心里就有数了。 aicheck官网直达入口&am…

2026/9/30 2:11:32

BepInEx插件框架零基础5分钟上手

BepInEx插件框架零基础5分钟上手 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx 是一个给 Unity Mono、Unity IL2CPP 和 .NET 游戏装插件的框架,把模组能力挂进…

2026/9/30 2:11:32

找同城获客服务怎么判断合作公司是否正规?

配图提示:建议选用同城获客行业逻辑示意图、实体门店经营实拍图,禁止使用服务商宣传海报、带导流信息的截图。本文为第三方独立整理的便民科普参考内容,无任何商业合作关系,内容仅基于公开信息整理,不构成消费推荐或决…

2026/9/30 2:11:32

车队管理怎么解决?基于4G+GNSS定位三端一体化方案

很多物流企业、工程单位、外勤团队都面临车队管理难题:车辆位置不透明,调度全靠电话沟通;司机超速、偏离路线、公车私用难以监管;历史行驶记录无法留存,出现纠纷缺少凭证;车辆保养、里程统计依靠人工台账&a…

2026/9/30 2:11:32

第三篇 驱动理解与应变

相信大家使用到传感器都会用到相应的驱动,该驱动主要都是该设备的厂家提供的,这里的驱动主要是指软件驱动。为啥这里提前将驱动,主要是如果你作为一个算法工程师,如果对所使用的传感器的特性不了解,包括硬件、软件参数…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑