【发布时间】:2020-01-04 17:00:59
【问题描述】:
我的测试套件目前具有并行运行的功能,并且每个功能中的场景一个接一个地运行,而无需在场景之间重置 webdriver。这一切都很好,但我正在努力寻找一种在整个功能完成后进行拆卸的好方法,我不能使用 AfterFeature 因为它要求我的 webdriver 是静态的,这将阻止并行执行工作,如果我这样做在 afterScenario 中拆解然后我需要为每个场景重新启动我的 webdriver,这将不必要地占用更多时间。有什么方法可以使用 featurecontext 或其他东西来确定当前场景是否是功能中的最后一个场景?或其他类似的东西?我基本上需要一种方法来确定当前场景是否是功能的结束而不使用 Before/AfterFeature
【问题讨论】:
-
我没有并行执行的经验,但你可能想硬编码你的场景的名称(w_last,w_finish...滥用它,我在需要时做了几次)和确保预期场景在一个功能的一组场景中最后执行(nUnit 场景按字母顺序执行)。然后使用
FeatureContext.Current.FeatureInfo.Title查询它是否包含硬编码的子字符串。查看链接:ontestautomation.com/running-your-tests-in-a-specific-order -
我已经考虑过这样做,如果绝对没有其他方法,这可能是我需要做的,但理想情况下,无论我运行多少场景,我都希望它能够工作在该功能中,如果我选择以任意组合运行 1-10 个场景中的任何位置,它应该可以工作。因此,我正在寻找一种方法来获取在此运行中为此功能运行的测试/场景的数量,或者以某种方式找出该功能何时将在它实际结束之前结束
标签: c# selenium nunit specflow