首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定(Python) behave特征文件是否从stepfile内成功运行?

如何确定(Python) behave特征文件是否从stepfile内成功运行?
EN

Stack Overflow用户
提问于 2015-07-25 02:47:05
回答 2查看 2.3K关注 0票数 0

假设我有一个主python-behave特征文件,在这个文件中,我检查是否存在25个,或多或少的特征文件,以正确的顺序运行每个文件,然后验证一些后置条件。

我希望能够在一个功能文件中测试多个功能,如果可能的话。我写了这个步骤:

代码语言:javascript
复制
@when(u'Feature {name} is executed')
def step_meta_feature(context, name):
    context.script_start_time = datetime.datetime.now()
    print("Testing feature " + name)
    os.system("behave " + name + ".feature --no-capture")
    context.script_end_time = datetime.datetime.now()

目前,只要在主功能文件的@when子句中执行了一个功能,此步骤将始终成功运行。我相当确定这是因为它没有检查任何条件,并且如果执行了一个behave脚本,无论它是否失败,这一步都会通过。

为了解决这个问题,我想在此步骤中或在environment.py文件的after_feature()函数中添加一行,以检查是否通过了已执行的behave特性。

Behave的API确实说它包含一个从功能文件创建的功能对象,它返回一个"status“变量,告诉您功能是通过了还是失败了。但是,状态变量似乎只能在environment.py文件中访问。

我的想法是,我会找到一种方法,使用behave的功能而不是os.system从步骤中执行一个功能对象,然后检查它的状态,但我不知道这是否可能。或者,我理解我可以编写一个功能文件,该文件按顺序执行25个场景,但在该文件中包含所有场景。但是,我希望避免这样做,因为出于单独测试的目的,主脚本被分成25个较小的脚本。此外,将几个小功能和一个大功能放在同一个文件夹中,以某种任意的顺序运行,这也不是一个好主意。

如何从environment.py或steps.py中检查来自另一个文件的特征是否通过或失败?

编辑:我想另一个想法是找到一种方法,将发送到命令行的文本输出到一个针对功能的日志文件中,并读取最后几行,以确定是否有任何功能或步骤失败,尽管这似乎是一种间接的方式。

EN

回答 2

Stack Overflow用户

发布于 2015-07-26 08:23:09

最大的问题是--你到底为什么需要它?如果特征X依赖于特征Y,那么它们都将失败。如果额外的功能是某种诊断功能,为什么不每次都运行它呢?“额外的诊断”是我可以想象的唯一可能有用的场景(仍然在BDD约定中),但坦率地说,它应该每次都运行,以确保一切都像预期的那样工作。

遗憾的是,如果因为某些原因你不能拥有它,最好的处理方法是在BDD之外,但是在你的CI内部(持续集成,例如TeamCity)。因此,您可以在构建步骤中创建每组功能,并且可以为失败的特定步骤设置触发器。

但我的感觉是,您只是拥有不完全是BDD的.feature文件,而现在您正在尝试修改工具以与之匹配。因此,可能最好的解决方案是重新考虑它们。

票数 0
EN

Stack Overflow用户

发布于 2015-12-08 13:05:22

我不知道你是否还在寻找答案,

我个人不建议使用主功能文件。

我建议在运行behave的顶层文件夹中设置另一个名为environment.py的python脚本。

在此文件中,您可以使用类似以下内容:

代码语言:javascript
复制
    def after_feature(context, feature):
            if context.failed:
                    print('Failed')
            else:
                    print('Passed')

顾名思义,behave会在每个功能文件执行完毕后调用此函数

或者,如果您正在寻找有关通过/失败和功能名称的更通用日志:

代码语言:javascript
复制
    def after_feature(context, feature):
            print('The feature: ' + feature.name + ' ' + feature.status)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31617684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档