我正在寻找一种方法来添加一个新的"模式"在Pysys Baserunner。
特别是我想添加一个验证模式,只需重新运行验证部分。在编写测试用例并尝试调整验证条件以便适应当前输出时非常有用,而无需重新重新保存完整的测试用例。
在不更改原始课程的情况下,最好的方法是什么?
答案 0 :(得分:1)
遗憾的是,这需要框架的支持。问题是BaseRunner类将始终自动清除输出目录,并且框架中没有挂钩以允许您避免这种情况。例如,您可以手动移动输出子目录,然后重新运行验证,然后再说“重复”(相同的目录级别),然后使用;
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”运行。如果您的执行需要很长时间,这可能有助于调试,但可能不希望您想要开箱即用,即跑步者的顶级选项只是对先前运行的测试执行验证。我将为此添加功能请求。
答案 1 :(得分:1)
自从最初的讨论以来,--validateOnly命令行选项已添加到PySys(在v1.1.1中),该选项几乎可以执行您的建议-它跳过execute方法并仅运行validate。
假设您未使用--purge(我认为对于此用例是一个安全的假设),并且您没有验证命令尝试从输出目录读取零字节文件(该命令即使未指定--purge,总是会被删除)。但是,假设满足这些条件,则在完成第一次测试后,您的(非空)输出文件仍然会存在,并且您可以使用--validateOnly命令重新运行仅验证。
要获得此功能,您可以安装最新的PySys版本(1.4.0)-请参见module