当前位置: 首页 > 编程语言 > C#

我可以在Specflow中将一个测试作为另一个测试的一个步骤运行吗?

时间:2023-04-10 18:01:16 C#

我可以在Specflow中将测试作为另一个测试的步骤运行吗?长话短说;博士;如何创建调用另一个测试作为第一步的specflow测试?假设我已经有一个specflow测试并且我想运行另一个比第一个测试更深入的测试然后我创建第二个测试运行第一个测试作为它的第一步我添加额外的步骤来测试更深层次的功能有点幽默。例如,我有一个已经创建销售的测试:假设我想创建一个销售订单然后我打开销售订单页面然后我单击添加新订单按钮然后创建一个新的销售订单我想进行另一个测试,一个测试添加销售线另一个测试完成销售另一个测试取消销售等等。所有这些测试都将从与简单测试相同的前四个步骤开始,这将打破DRY原则。那么我怎样才能让第二个测试的第一步只运行第一个测试呢?例如:假设我已经运行了创建销售订单测试//就在这里它只运行了第一个测试然后我添加了一个销售订单行然后更新了订单总数如果每个测试都以相同的前四行开始,那么我意识到直到我需要更改简单的创建销售测试,然后我还需要查找并修复重复这四行的其他地方。编辑:请注意,这也应该跨功能工作。例如,上面的简单测试是在销售函数中定义的。但我也有一个积分功能,每次创建销售时都需要它才能记入它:假设我想记入销售我运行创建销售订单测试我完成销售我点击creditbutton然后销售记入贷方如前所述,您可以使用背景(在大多数情况下这可能是最佳选择),但您也可以创建调用其他步骤的步骤。[Binding]publicclassMySteps:Steps//继承这个基类很重要,否则下面使用的方法将不可用{[Given("我创建了一个订单")]publicvoidCreateOrder(){Given("我想要创建销售订单");Given("我打开销售订单页面");Given("我点击添加新订单按钮");Then("一个新的销售订单被创建");您可以在以下场景中使用它:场景:我添加了另一个销售假设我已经创建了一个订单当我添加销售订单行然后更新订单总额这有一个优点,即这个复合步骤可以在场景中的任何地方使用,不仅仅是一个起点。如果需要,可以使用后台在多个函数中重复此步骤:背景:假设我想创建一个销售订单我打开销售订单页面我单击添加新订单按钮然后创建一个新的销售订单场景:我添加另一次销售当我添加销售订单行然后订单总额更新场景:我添加取消销售当我取消销售然后订单总额更新为0等。您不需要运行实际步骤来创建销售订单。只需实施一个步骤定义,将其作为单行代码为您完成。首先,虚构的SalesOrder类:publicclassSalesOrder{publicdoubleAmount{get;放;}公共字符串描述{得到;放;}}然后是使用TechTalk.SpecFlow的步骤确定;使用TechTalk.SpecFlow.Assist;[Binding]publicclassSalesOrderSteps{[Given("我已经创建了一个销售订单")]publicvoidGivenIHaveAlreadyCreatedASalesOrder(){varorder=newSalesOrder(){//..设置默认属性};//保存到场景上下文,以便后续步骤可以访问它ScenarioContext.Current.Set(order);使用(vardb=newDatabaseContext()){db.SalesOrders.Add(order);db.SaveChanges();}}[Given("我已经创建了一个具有以下属性的销售订单:")]publicvoidGivenIHaveAlreadyCreatedASalesOrderWithTheFollowingAttributes(Tabletable){varorder=table.CreateInstance();//保存到场景上下文,以便后续步骤可以访问它ScenarioContext.Current.Set(order);使用(vardb=newDatabaseContext()){db.SalesOrders.Add(order);数据库文件eChanges();您现在可以将销售订单创建为单行,可以选择使用一些自定义属性:场景:给定的东西我已经创建了一个销售订单场景:其他给定的我已经创建了具有以下属性的销售订单:|领域|价值||金额|25.99||说明|只是一个测试订单|如果您需要访问其他步骤定义中的SalesOrder对象而不在数据库中查询它,请使用ScenarioContext.Current.Get()从方案上下文中检索该对象如果我理解正确的问题,您想在不同的函数中调用其他方案文件。您可以通过在调用场景中创建一个步骤(本质上是嵌套步骤,如上面接受的答案)来处理此问题。将创建的步骤添加到后台或者以上是C#学习教程:CanIrunatestasastepofanothertestinSpecflow?分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——创建一个会调用场景中步骤的函数。将标签@create_sale_order添加到需要销售订单作为先决条件的场景。为标签@create_sale_order实现一个beforeschemehook,调用步骤1创建的函数。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: