Python 跨测试套件共享步骤定义(BDD)

Python 跨测试套件共享步骤定义(BDD),python,bdd,squish,Python,Bdd,Squish,它描述了如何在测试套件之间共享步骤定义,但对我来说不起作用 我的情况是: source(findFile('scripts', 'python/bdd.py')) setupHooks('../shared/scripts/bdd_hooks.py') # Collect my custom step definitions: collectStepDefinitions('/home/myuser/squish/pagesteps/steps') def main(): testS

它描述了如何在测试套件之间共享步骤定义,但对我来说不起作用

我的情况是:

source(findFile('scripts', 'python/bdd.py'))
setupHooks('../shared/scripts/bdd_hooks.py')

# Collect my custom step definitions:
collectStepDefinitions('/home/myuser/squish/pagesteps/steps')

def main():
    testSettings.throwOnFailure = True
    runFeatureFile('test.feature')
如果我在test.py中设置这个,我会得到错误“给定的未定义” 我的已实施步骤未映射(我从(共享/脚本/步骤)路径清空了步骤文件夹,当您选择“实施缺少的步骤”时,将在该路径中创建步骤)


有没有人知道如何在文件夹pagesteps中实现所有步骤?与steps套件无关

要在整个测试套件中共享步骤,并且要更改步骤的默认位置,并将步骤文件夹放入全局脚本中,必须传入collectStepDefinitions()步骤位置控制器的整个路径


例如:如果您的步骤位于('E:/myproject/squish/lib/panels/steps'),则collectStepDefinitions()的实现方式类似于collectStepDefinitions('/myproject/squish/lib/panels/steps'),而不是collectStepDefinitions('../lib/panels/steps')

这对我适用。您是否已将路径调整为适用于您的操作系统和系统?你到底走了哪条路?该路径中是否有*.py文件?请粘贴在shell中执行的“ls THAT_PATH”(将该_PATH替换为为您自定义调用collectStepDefinitions()指定的实际路径)的输出,以便我们进行双重检查。请将鼠标悬停在其中一个错误标记上,同时复制并粘贴编辑功能文件时显示的错误。这是我在test.py文件顶部的导入语句:
source(findFile('scripts','python/bdd.py'))
setupHooks('../shared/scripts/bdd_hooks.py')
collectStepDefinitions('/lib/panels/traffic/script_1'))
脚本_1.py包含步骤定义CollectStepDefinitions()要求您向其传递目录路径。它将尝试在“/lib/panels/traffic/script_1”中查找*.py文件。那个路径真的存在吗?它真的是一个文件夹吗?(将用户的文件放在操作系统的/lib文件夹中似乎很奇怪。)现在确实可以工作了。我的问题是我没有传递文件的整个路径,似乎在collectStepDefinitions()中传递('/myproject/squish/lib/panels/traffic')是必需的,但不能传递('../lib/panels/traffic')。感谢您的帮助您需要将绝对/完整路径传递给collectStepDefinitions(),这不可能是真的,因为test.py中对collectStepDefinitions()的默认调用使用了相对路径(相对于测试套件的测试用例文件夹):collectStepDefinitions(“./steps”,“../shared/steps”)事实上,如果步骤是在测试套件的共享文件夹下实现的,但是如果您有一个页面对象体系结构,并且文件夹步骤是在全局脚本下实现页面的地方实现的,那么您就不能传递collectStepDefinitions(“./steps”,“../lib/panels/steps”)是,因为脚本解释器的工作目录是当前测试套件的测试用例文件夹,所以相对路径必须是相对的。使用collectStepDefinitions(“./steps”,““../lib/panels/steps”)收集位于全局脚本文件夹中某处的内容不起作用,因为“.”部分与脚本解释器工作目录/测试用例文件夹相对。您可以将答案评级为+1,因为在上面解释的情况下答案是正确的,所以答案不精确/错误,因为使用相对路径就可以了。例如,当套件目录和其中一个全局共享文件夹位于同一父文件夹中时,可以使用collectStepDefinitions(…“../../the_global_script_dir”)。这与你的答案所声称的相反。