unittest测试套件将qunit javascript套件集成到unittest流中

QUnitSuite的Python项目详细描述


QunitSuite是能够运行QUnit测试套件的^{TT1}$。 在正常的unittest进程中,通过PhantomJS

QunitSuite建立在Ben Alman的接口工作之上 在PhantomJS和主机/报告代码之间:垫片和 PhantomJS配置文件是gruntqunit任务的配置文件

为什么

您是一个python商店或开发人员,您已经构建了工具和测试 围绕unittest(或与unittests兼容)和您的测试 pipeline是基于此,您正在进行一些 这些天来,你想做一些测试 你的网络资料。

但你不想重做整个测试堆栈 那。

QunitSuite简单地嫁接基于QUnit的测试,在PhantomJS中运行,在 您现有的基于美元的架构。

什么

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,它直接更改原始的 结果的errorsfailures属性是 测试运行程序API。这可以工作,但是可以将自定义结果放入 奇怪的状态和中断,例如unittest2的@failfast
  • 最后,monkeypatch未记录和实现细节 _exc_info_to_string在提供的result上。这就是 至少现在是这样。
<分区>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过Spring MVC web应用程序向客户端发送文本文件   java是否可以在运行时动态实例化DAO类?   调用VB。来自Java的net函数   java在Android中通过单击打开特定文件夹   java如何使用maven pom。xml标识非标准项目结构中的testng测试用例?   java为什么FOP在大文件上崩溃?   Architecture python+flask和spring boot+java   java Kafka工具根本没有启动Ubuntu 19.10   如何使用Eclipse运行Java USB API for Windows   java如何在Eclipse中查看J2EE预览服务器/容器的日志/控制台?   网页抓取是否可以使用Java crawler crawler4j暂停和恢复抓取?   java当我第二次按下按钮时,应用程序停止工作   带有偏移量和限制的java SQLite分页问题   java如何在OSX mavericks中将端口80转发到8080   java从泛型方法调用非泛型方法   java My代码未按预期工作。十进制输出不是它应该的样子   节点。java中的js加密(jasypt)和nodejs中的解密   java乘法表不工作数组索引超出范围   java将JDBC与Firebirdsql连接起来