我正在寻找一种在Pysys baserrunner中添加新"模式"的方法。
我特别想添加一个验证模式,它只是重新运行验证部分。当您正在编写测试用例并试图调整验证条件以适应当前输出而无需重新运行完整的测试用例时,这是非常有用的。
在不改变原始类的情况下做到这一点的最好方法是什么?
不幸的是,这需要框架的支持。问题是baserrunner类总是会自动清除输出目录,并且框架中没有钩子允许您避免这种情况。例如,您可以手动移动要重新运行验证的输出子目录,然后说'repeat'(相同的目录级别),然后使用;
from pysys.constants import *
from pysys.basetest import BaseTest
class PySysTest(BaseTest):
def execute(self):
if self.mode=='repeat': pass
def validate(self):
if self.mode=='repeat':
self.output=os.path.join(self.descriptor.output, 'repeat')
中我已经提交了execute和validate的实现。您需要将模式添加到测试
的描述符中 <classification>
<groups>
<group></group>
</groups>
<modes>
<mode>repeat</mode>
</modes>
</classification>
并使用"pysys.py run -mrepeat"运行。这将有助于调试,如果你的执行需要很长时间,但可能不希望你想要开箱即用,即一个顶级选项,让运行者只执行验证之前运行的测试。我将为此添加一个功能请求。
自从最初的讨论以来,PySys(在v1.1.1中)添加了一个——validateOnly命令行选项,它几乎按照您的建议做了——它跳过execute方法,只运行validate。
假设您没有运行——purge(我认为这对于这个用例来说是一个安全的假设),并且您没有尝试从输出目录读取零字节文件的验证命令(即使没有指定——purge,这些命令也总是被删除)。但是,假设满足了这些条件,那么在您完成第一次测试运行之后,您的(非空的)输出文件仍然存在,并且您可以使用——validateOnly命令重新运行验证。
要获得此功能,您可以安装最新的PySys版本(1.4.0)-参见https://pypi.org/project/PySys/