我正在寻找一种在 Pysys Baserunner 中添加新“模式”的方法。
特别是我想添加一个验证模式,它只是重新运行验证部分。当您编写测试用例并尝试调整验证条件以适应当前输出而无需重新运行完整的测试用例时很有用。
无需更改原始课程的最佳方法是什么?
我正在寻找一种在 Pysys Baserunner 中添加新“模式”的方法。
特别是我想添加一个验证模式,它只是重新运行验证部分。当您编写测试用例并尝试调整验证条件以适应当前输出而无需重新运行完整的测试用例时很有用。
无需更改原始课程的最佳方法是什么?
不幸的是,这需要框架的支持。问题是 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')
我省略了执行和验证的实现。您需要将模式添加到测试描述符中
<classification>
<groups>
<group></group>
</groups>
<modes>
<mode>repeat</mode>
</modes>
</classification>
并使用“pysys.py run -mrepeat”运行。如果您的执行需要很长时间,这将有助于调试,但可能不希望您想要开箱即用,即运行器的顶级选项仅对先前运行的测试执行验证。我会为此添加一个功能请求。
自最初的讨论以来,PySys(在 v1.1.1 中)中添加了一个 --validateOnly 命令行选项,它几乎可以执行您的建议 - 它跳过执行方法并只运行验证。
假设您没有使用 --purge 运行(我认为这是此用例的安全假设),并且您没有尝试从输出目录读取零字节文件的验证命令(总是被删除即使没有指定 --purge )。但是,假设满足这些条件,在您完成第一次运行测试后,您的(非空)输出文件仍然存在,您可以使用 --validateOnly 命令重新运行验证。
要获得此功能,您可以安装最新的 PySys 版本 (1.4.0) - 请参阅https://pypi.org/project/PySys/