Python 启动测试套件时控制环境的方法
我正在构建一个测试框架,它将有一个由Python/莴苣支持的顶级小黄瓜接口。我们希望将其构建到我们的持续集成基础架构(Hudson)中,并使相同的测试能够在任何环境(dev int、qa int、stage等)上轻松运行。由于无法通过命令行将参数传递给测试,因此我一直在考虑的方法是: 哈德逊作业Python 启动测试套件时控制环境的方法,python,hudson,lettuce,Python,Hudson,Lettuce,我正在构建一个测试框架,它将有一个由Python/莴苣支持的顶级小黄瓜接口。我们希望将其构建到我们的持续集成基础架构(Hudson)中,并使相同的测试能够在任何环境(dev int、qa int、stage等)上轻松运行。由于无法通过命令行将参数传递给测试,因此我一直在考虑的方法是: 哈德逊作业 在计算机上动态构建配置文件的子作业,该配置文件将 根据所需的测试环境运行测试 子作业启动runner机器上的莴苣,然后拾取地形文件 动态配置中的值,以针对正确的环境运行测试 子作业删除配置文件 虽然这会
虽然这会起作用,但对我来说,这似乎是一项棘手的工作。我一直在谷歌上搜索,但似乎连写莴苣的人都认为配置是不必要的,如果你想要,你应该在测试之外设置环境变量,然后从内部读取它们。除了重新设计莴苣以能够传递命令行参数外,还有人能想出其他方法来实现这一目标吗?不确定莴苣在当时是什么样子,但有一个
世界
对象。作者承认这有点不符合python,但你可以这样做:
from lettuce import Runner, world
runner = Runner('path/to/tests', verbosity=4)
world.VAR_NAME = VALUE
result = runner.run()
在terrain.py
文件中,您可以像这样访问世界值:
from lettuce import step, world
@step('step definition')
def function my_step(step):
print world.VAR_NAME
这些世界变量在此测试套件期间可用,因此请注意您在世界中输入的信息量没有任何东西强迫您使用内置的
命令行界面。您可以轻松编写自己的Runner类或替换。您必须使用Hudson还是可以使用?在后一种情况下,您将使用矩阵构建与。我可以详细说明使用詹金斯是否是一种选择。@malenkiy_scot不,我们只有哈德逊。。。看起来至少现在,我们正在使用上面概述的方法。我希望我们能有一个更好的解决方案……不管怎样,我们还是离开了莴苣,但这真的没有抓住重点。关键是要将测试环境与测试代码分开配置,因此在伪全局命名空间(即world
中填充一组值并不能真正解决问题。此外,伪全局名称空间也很糟糕。非常糟糕。