unittest测试套件将qunit javascript套件集成到unittest流中
QUnitSuite的Python项目详细描述
QunitSuite是能够运行QUnit测试套件的^{TT1}$。 在正常的unittest进程中,通过PhantomJS。
QunitSuite建立在Ben Alman的接口工作之上 在PhantomJS和主机/报告代码之间:垫片和 PhantomJS配置文件是grunt的qunit任务的配置文件
为什么
您是一个python商店或开发人员,您已经构建了工具和测试 围绕unittest(或与unittests兼容)和您的测试 pipeline是基于此,您正在进行一些 这些天来,你想做一些测试 你的网络资料。
但你不想重做整个测试堆栈 那。
什么
QunitSuite当前提供一个对象作为其API的一部分: qunitsuite.QUnitSuite(testfile[, timeout])。
这将生成一个unittest.TestSuite,适用于所有常见的 东西(运行它,并将它交给另一个将要运行的测试套件 就是这样
testfile是引导Qunit测试的HTML文件,就像 通常通过浏览器访问。它可以是本地的 (file:)URL,或HTTP URL。只要一个普通的浏览器可以打开 然后执行它,PhantomJS就可以了。
timeout是传递给PhantomJS运行程序的检查:如果运行程序 不产生超过timeout毫秒的信息 将取消运行并生成测试错误。这个 通常情况下,您的testfile不是Qunit测试 文件,Qunit未运行或Qunit的运行程序已停止(对于异步 测试)并且从未重新启动
默认值非常保守,大多数测试都应该运行 正确使用较低的超时(特别是如果所有测试 同步)。
如何
unittest的自动发现协议不能直接用于测试 套件(它寻找测试用例)。如果你想让自动发现工作 正确地说,您必须使用load_tests协议:
# in a testing module def load_tests(loader, tests, pattern): tests.addTest(QUnitSuite(qunit_test_path.html)) return tests
在这种特定情况之外,可以使用QUnitSuite作为 标准TestSuite实例,运行它,将其添加到另一个 套用或传递给TestRunner
投诉和申诉
速度
启动一个phantomjs实例并运行一个套件 相当高的开销,在这台机器上大约一秒钟 (2.4GHz、8GB RAM和一个固态硬盘)。
由于每个QUnitSuite当前都创建自己的phantomjs实例, 创建更大的套件(放置许多模块&;是个好主意; 在同一个Qunit HTML文件中进行测试,但不排除拆分 它们跨越多个js文件)。
黑客
Qunitsuite包含一个相当大的黑客,可能会导致 问题取决于您的确切设置:万一失败或 错误,unittest.TestResult格式化提供的错误回溯 在测试对象旁边。这要经过python的 回溯格式化代码,那里没有挂钩。
可以期望使用自定义的TestResult,但是对于测试套件 TestResult实例必须由调用方提供,因此 没有直接钩住它。
这留下三个选项:
- 创建一个自定义的TestResult类并要求它是 提供给测试套件这需要改变工作流程, 测试运行程序的定制(据我所知)不是 可通过Python2.7的自动发现获得这是最干净的 但在实用性上完全失败了。
- 创建一个自定义的TestResult,它直接更改原始的 结果的errors和failures属性是 测试运行程序API。这可以工作,但是可以将自定义结果放入 奇怪的状态和中断,例如unittest2的@failfast
- 最后,monkeypatch未记录和实现细节 _exc_info_to_string在提供的result上。这就是 至少现在是这样。
推荐PyPI第三方库
- 热门话题
- java在OSGi felix scr注释中将运行时参数传递给服务 java如何按字母顺序将对象插入ArrayList? 在Netbeans中调试Java java从json文件中获取不同的照片 通过迭代和打印将java插入2个哈希表的运行时间 java如何替换JUnit 5中的WireMock@Rule注释? shell在javajsch程序中使用'been'命令访问受限目录 java RMI是什么类型的? javajooq别名构造 java如何通过在testNG中创建对象来调用测试方法 java下载从安卓 URL加载到imageview中的图像 从java运行bat文件 带有客户端证书的java嵌入式Jetty java Ajax将JSON数组发送到servlet 创建数据并将数据添加到SQLite数据库时发生java错误 添加CV的javascript HRMS项目过程 java AspectJ加载时编织不起作用 java动态更改(使用JMX)正在监视的文件夹中的新文件 java岛数迭代矩阵并将节点标记为已访问