Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 启动测试套件时控制环境的方法_Python_Hudson_Lettuce - Fatal编程技术网

Python 启动测试套件时控制环境的方法

Python 启动测试套件时控制环境的方法,python,hudson,lettuce,Python,Hudson,Lettuce,我正在构建一个测试框架,它将有一个由Python/莴苣支持的顶级小黄瓜接口。我们希望将其构建到我们的持续集成基础架构(Hudson)中,并使相同的测试能够在任何环境(dev int、qa int、stage等)上轻松运行。由于无法通过命令行将参数传递给测试,因此我一直在考虑的方法是: 哈德逊作业 在计算机上动态构建配置文件的子作业,该配置文件将 根据所需的测试环境运行测试 子作业启动runner机器上的莴苣,然后拾取地形文件 动态配置中的值,以针对正确的环境运行测试 子作业删除配置文件 虽然这会

我正在构建一个测试框架,它将有一个由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
    中填充一组值并不能真正解决问题。此外,伪全局名称空间也很糟糕。非常糟糕。