- SpecFlow - Discussion
- SpecFlow - Useful Resources
- SpecFlow - Quick Guide
- SpecFlow - Table with CreateSet
- Table with CreateInstance
- Table conversion to Dictionary
- Table conversion to Data Table
- Data Driven Testing without Examples
- Data Driven Testing with Examples
- SpecFlow - Background Illustration
- SpecFlow - Hooks
- SpecFlow - Step Definition File
- SpecFlow - Feature File
- SpecFlow - Gherkin Keywords
- SpecFlow - Gherkin
- Configure Selenium Webdriver
- SpecFlow - Creating First Test
- SpecFlow - Binding Test Steps
- SpecFlow - HTML Reports
- SpecFlow - Runner Activation
- Other Project Dependencies
- SpecFlow - Project Set Up
- Visual Studio Extension Installation
- SpecFlow - Visual Studio Installation
- Behaviour Driven Development
- Test Driven Development
- SpecFlow - Introduction
- SpecFlow - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
SpecFlow - Quick Guide
SpecFlow - Introduction
SpecFlow是建立在BDD模式基础上的开放源测试自动化工具。 大部分用于为网络内建造的项目进行自动化测试。 该辅导员将提供有关SpecFlow及其特征的知识。
特殊标准主要是建立、监测和管理人类可读的接受测试案例。 它的创建方式是Gherkin,这是一个通俗的语言。 SpecFlow有Gherkin parser,可使用70多种语言。 我们可以通过SpecFlow的内在设计测试操作器和SpecFlow+ Ronner进行测试。
Components
频谱的主要任务是对盖尔金的特质文档进行约束。 SpecFlow+Runer是试验操作员,具有执行能力和编写报告的能力。 这也没有费用,我们需要为此建立一个小盘账户。
SpecFlow+ LivingDoc是一组工具,以可读格式保存盖尔金特征档案。 这一点可以与工作队的利益攸关方分享,他们没有像演播室这样的工具。
SpecFlow+ LivingDoc 发电机是SpecFlow的一组原始材料和工具,用于制作Gherkin特征文档的文件。 这并不要求设立账户,而且可以很容易地与其他账户分享。
Editing Features in Visual Studio Extension
此外,SpecFlow有Visualroom Expansion,提供下文所述的额外功能——
Intelpsense (auto-completion) for Steps and Keywords
为方便使用SpecFlow,Intelpsense提供了我们为限制建议清单而发现的特征。 《英特尔利斯法》也可用于盖尔金文档、关键词和密码档案。
在视觉演播室,点击Edit,然后选择英特尔利斯,以获得各种选择。
以下图像显示Gherkin文档中的英特尔利斯。
Gherkin Syntax Highpghting
突出关键词、标签、评论、无约束(纯彩)步骤、约束(黑)步骤、约束性步骤参数(灰色斜体)。
Feature Files Outpne and Comments
在视觉演播室, Edit的大多数项目 菜单可以为SpecFlow的特性文档增加价值。 我们可以评论和确定具有象征特征的具体界线,或像CTRL+K CTRL+V或CTRL+K + CTRL+V这样的内在短小段。
Edit menu有多种选择,可以根据特性档案的不同章节进行定制。
然后选择Outpning>。
我们可以确定自己的专题档案模板,以便在创建新的测试案例时开放。
Formatting Tables
我们可以自动修改表格大小和格式,因为我们将一栏的名称分类并输入其数值。
但是,SpecFlow并不仅限于视觉演播室,也可以使用Mono和VSCode。
SpecFlow - Test Driven Development
http://www.un.org/Depts/DGACM/index_chinese.htm 其中包括以下步骤:
如果试卷通过,就可进行第二次测试。
如果测试失败,则转入第三步。
如果试卷通过,移至第四步。
如果试验失败,则跳跃到第3步。
<4>Step 4——“起步守则”的后继器,并在制定之前完成上述所有步骤。
Benefits of TDD
贸易和发展会议的好处如下:
要求开发商逮捕有关要求,以了解情况的结果应当是什么以及如何检验。
只有当所有测试案例都通过和编码重新计算完成时,才能实施单元。 因此,在将其移至下一次测试之前,应先进行核查和重新计算。
在进行重组后,单位测试套件将投入使用。
单位测试可用作活的文件。
如果发现ug子,就会进行测试,以了解ug的细节。 该书经过测试更新。 同时,还进行了其他测试,以确保现有特征不会被固定装置打破。
开发商可以参与设计决定,并在试验执行阶段随时加以改进,以确保申请工作正确。 这样做是为了提高产品的可维持性。
开发商肯定会做出任何修改。 这是因为,如果这影响到任何现有特征,则应通过执行试验加以体现。 这样,就可以迅速解决难题。
在进行继任测试时,还核实了所有先前的胎盘,并且可以避免类似的ug。
由于主要测试是在开发阶段进行的,在交付之前所需的测试期限是短的。
Drawbacks of TDD
贸易和发展会议的反馈意见如下:
开发商发现难以决定何时开始测试。
开发商对如何测试感到困惑。
开发商不知道是否涵盖所有要求。
如果发展商的法典增加商业价值,他们就没有把握。
神话 Around TDD
贸易和发展会议前后的神话如下:
神话 |
事实 |
---|---|
投技企司仅负责自动化测试。 |
TDD是采用试验第一方法的一种发展技术。 |
TDD并不包括设计。 |
贸易和发展委员会根据要求进行了彻底的研究和设计。 设计在开发阶段完成。 |
投技援仅用于单位测试。 |
投技企发中心还进行系统测试和一体化测试。 |
不能为正统测试项目采用TDD。 |
TDD用于阿吉莱发展。 但也可以通过常规测试项目。 |
贸易和发展会议被视为一种工具。 |
投技企发司是一种发展技术,每张新的单位测试通行证都张贴,它就拥有自动套机,每当编码和验收后活动发生修改时,即可运行。 |
SpecFlow - Behaviour Driven Development
Behaviour Driven Development 亦称BDD有features 下表:
找到一种共同的方法和工具,帮助与开发商、企业分析家和其他利益攸关方建立互动关系,共同促进产品开发。
确保交付的产品增加必要的商业价值。
排除了该系统的能力及其发展方式。
保证产品是可行的,具有良好的结构。
检查软件的功能,确保终端用户的期望得到满足。
BDD Methodologies
BDD采用的主要方法如下:
Specification By Example
它利用互动中的实例来描述软件特征及其业务情景。 这一方法有助于消除开发商、测试者、产品所有人、工商分析家和团队中所有其他利益攸关者在业务要求方面的知识差距。
Test Driven Development
在提到BDD时,测试驱动发展将实例转化为平原文字和可执行规格。 编制者将该文件作为文件,同时执行新的特点。 它有助于建立一个适当的法典基础,同时进行回归诉讼。 因此,整个产品生命周期的总体维修费用较低。
BDD Tool
光谱仪是开放源头的BDD工具之一。 它包含一个地名。 页: 1 SpecFlow的源代码设在Gite Hub。 大部分用于为网络内建造的项目进行自动化测试。 它的职能与Cucumber相似。
SpecFlow的特征档案结构
它包括特征、背景情景和两个情景。 特征文件包括申请中特性的接受标准。
SpecFlow - Visual Studio Installation
在本章中,我们将看到安装演播室和项目配置的过程。
Installation
链接:
我们的系统被下载了顶号。 pck。
一旦安装完毕,就选择NET desktop development。 然后点击Install。
包裹的下载和安装已经开始。
点击Restart/b>。
从一开始,即视频演播室。
视频演播室显示,欢迎放映。
连同网站 露面。 如果没有
账户,现在点击Not, 可能晚于链接和进行。
为专题选择彩色,并在Startudio上点击。
Project Configuration
视力演播室着陆页一旦启用,就点击的新项目。
我们将建立新的C#级图书馆。 在搜索箱中填入。 选择Class Library (.NET Core)和点击Next。
项目名称和地点,然后点击Create。
Code Implementation for Project
using System; namespace ClassLibrary2 { pubpc class Class1 { pubpc int Number1 { get; set; } pubpc int Number2 { get; set; } pubpc int Subtraction() { throw new NotImplementedException(); } } }
为了建立这一解决办法,请上Build。 Menu, 然后选择Build Solutions。
成功的信息已经展示,我们成功地在视觉演播室设立了一个项目。
SpecFlow - Visual Studio Extension Installation
如前所述,《虚拟演播室延伸 允许在测试自动化方面增加许多功能。 这一延长可到2017年和2019年演播室视。
Installation
开放式视频演播室和浏览器Extensions Menu, 然后点击管理推广。
管理推广 人口增加。 SpecFlow在搜索箱内。 搜索结果一旦出现。 www.un.org/Depts/DGACM/index_french.htm
下载工作完成后,我们需要重新启用Visualroom。 如再次到管理推广。 普遍而言,我们可以在 封存的内找到这一延伸。 表格。
而且,我们可以找到可分配和可统一的备选办法。 现在是SpecFlow。 www.un.org/Depts/DGACM/index_french.htm
SpecFlow - Project Set Up
现在,我们将在我们先前建设的同一项目中设立一个SpecFlow项目。
Project Creation
载于Solution Exploration节的右侧。 www.un.org/Depts/DGACM/index_french.htm 然后选择新项目。
搜索箱内的SpecFlow,SpecFlow Project由于搜索结果而展示。 页: 1
进入项目名称和地点,然后点击Create。
选择在试验框架下选择> 新SpecFlow项目人口减少。 然后点击Create。
解决办法探索者现在应设立一个称为SpecFlow Project1的新项目。
Project Folder
随着SpecFlow项目的建立,我们还将找到由司机、属地、特征、ook等组成的项目设计的清晰的多重结构。
SpecFlow - Other Project Dependencies
我们需要在项目上提及我们为SpecFlow项目建立的阶级图书馆。 这对于在该项目的班级图书馆测试班级非常重要。
Add Project Dependencies
项目SpecFlow Project1,Solution Explor/b>。 接着,右侧的侧面被打碎。 选择Add Project Reference。
Reference Manager 人口开放。 选择班级图书馆的检查箱,然后点击OK。
Building and Running Tests
接下来是Build。 缩略语 我们应当获得成功的信息,作为产出。
加入 试验菜单,并选择 试验>。
我们应当能够找到SpecFlow项目的附加特征。 选择Run All Tests in View。 执行状况如下:第号 由于测试尚未执行。
在特性建议之前的exclamation sign,该特征的试验执行尚待完成。
SpecFlow - Runner Activation
我们必须启动SpecFlow + Runner。avigate to View 然后选择Output。
然后选择 试验,在上,从开始的产出——下降。
我们应当获得试验产出以及操作器的活性环节。 只有当我们选择了SpecFlow+ Ronner时,我们才应当有这一联系。
Activate Link
在浏览器上打开启动链接。 我们应当去SpecFlow着陆页。 www.un.org/Depts/DGACM/index_french.htm
在Yes上点,请Microsoft进入我们的SpecFlow账户。
为设立账户,提供所需信息。 然后点击Createaccount。
我们现在将成功启动SpecFlow账户。
现在,如果我们再次从文本探索者那里进行测试,它将显示适当的结果。
SpecFlow - HTML Reports
缩略语在你完成的所有测试时产生报告,其中包括测试结果的分类。
Test Run from Explorer
为了建立解决办法,请上Build。 Menu, 然后点击Build Solutions。
我们应该获得一个成功的信息。
加入 试验菜单,并选择 试验>。
我们应当能够找到SpecFlow项目的附加特征。 选择Run All Tests in View。
其结果如下图所示。
Report Generation
加入Output,菜单和选择 试验,从Show输出到——下降。
全部执行结果在波特角展出。 报告载有关于测试案例、全部成功、忽视、熟练、失败等等的资料。 在执行时使用的用户名称和机器名称也得到了记录。
此外,在执行期间还显示与超文本报告和记录途径的联系。
http://www.un.org。 我们将以项目名称、配置、执行启动时间、期限、校对数目等详细超文本报告。
报告应说明成果、试验时间表摘要和完整的特征摘要。
报告还包括《错误摘要》和《情景摘要》。 该表载有每次测试的成功率。 为了了解具体特征的细节,我们可以点击“情景”名称(作为链接)。
其次,每个步骤都载有执行细节。 每个步骤的详情见Trace和Result。
SpecFlow - Binding Test Steps
Test Steps in Feature File
进入SpecFlow项目,在Solution Exploration内。 然后点击Features。 专题文件应显示。
特征档案有助于以简单文本的形式记录申请的预期特点,也可用于自动化。 关键词 然后, 在SpecFlow使用等时,用Gherkin语言描述假想情况。
Test Step Binding
上述特征档案因SpecFlow项目违约而增加。 该系统还产生测试方法,这些方法应操作在功能档案中界定的情景。 Right-cpck on any pne on the following the Scenario keyword. 然后点击Go To定义备选办法。
视觉演播室确定了这一步骤的相应步骤定义。 举例来说,它开放了 计算器/标准”,移至。 鉴于NumberIs方法。
SpecFlow - Creating First Test
我们现在将在课堂图书馆建立一个档案,以分两个号码。
using System; namespace ClassLibrary2 { pubpc class Class1 { pubpc int Number1 { get; set; } pubpc int Number2 { get; set; } pubpc int Subtraction(){ return Number1 - Number2; } } }
Feature File Implementation
Step Definition File Implementation
上述特征档案的相应步骤定义,以及使用1级进行减员。
using ClassLibrary2; using FluentAssertions; using TechTalk.SpecFlow; namespace SpecFlowCalculator.Specs.Steps { [Binding] pubpc sealed class CalculatorStepDefinitions { private readonly ScenarioContext _scenarioContext; //instantiating Class1 private readonly Class1 _calculator = new Class1(); private int _result; pubpc CalculatorStepDefinitions(ScenarioContext scenarioContext) { _scenarioContext = scenarioContext; } [Given("the first number is (.*)")] pubpc void GivenTheFirstNumberIs(int number){ _calculator.Number1 = number; } [Given("the second number is (.*)")] pubpc void GivenTheSecondNumberIs(int number){ _calculator.Number2 = number; } [When("the two numbers are subtracted")] pubpc void WhenTheTwoNumbersAreSubtracted(){ _result = _calculator.Subtraction(); } [Then("the result should be (.*)")] pubpc void ThenTheResultShouldBe(int result){ _result.Should().Be(result); } } }
Executing the Test
建立上述解决办法,然后在我们从 试验获取后继信息之后进行试验。
选定SpecFlow Project1,在Run All test in View上点击。
结果显示为1 通过<>。 连同执行期限。 选择 减去这一结果的额外产出,以获得结果细节。
每个试验步骤的执行结果都显示。
专题卷宗中的所有步骤都按现状执行。 此外,《步骤定义文件》中的相应方法也随着执行时间的推移而表现出来。
SpecFlow - Configure Selenium Webdriver
为在视力演播室召集Selenium Webdriver,我们将利用NUnit Framework的帮助。 这一框架允许在C#中进行冶炼。
Configure NUnit Framework
我们首先将设立一个全国团结组织项目。
视力演播室着陆页一旦启用,就点击的新项目。
NUnit,载于查询箱 从搜索结果中产生一个新的项目 popup. Selected NUnit Test Project (.NET Core)。 Cpck on Next。
输入项目名称和地点。 然后点击Create。
由于该项目是在NUnit(核心)下建立的,Setup和 试验。 方法应按违约加以界定。 此外,发言使用NUnit。 应首先思考。 这将证明,国家统一框架已经成功配置。
Configure Selenium WebDriver
一旦确定了Unit框架,就选择了NuGet Pack Manager,然后点击Package Manager Console。
我们必须执行所要求的 方案主管。 安装Selenium Webdriver和NUnit的指挥。
在包裹管理员Console操作以下指令:
Install-Package Selenium.WebDriver Install-Package Selenium.Firefox.WebDriver
用于联尼特的安装,由包裹管理员康索尔指挥:
Install-Package NUnit Install-Package UUnit3TestAdapter
为了检查安装状况,在包裹管理员康索尔进行指挥。
Get-Package
Implementation with Selenium WebDriver in C#
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using System; namespace NUnitTestProject1{ pubpc class Tests{ String u = "https://www.tutorialspoint.com/index.htm"; IWebDriver d; [SetUp] pubpc void Setup(){ //creating object of FirefoxDriver d = new FirefoxDriver(); } [Test] pubpc void Test1(){ //launching URL d.Navigate().GoToUrl(u); Console.WriteLine("Url launched"); } [TearDown] pubpc void close_Browser(){ d.Quit(); } } }
Execution & Output
将上述守则从 试验-> 试验 开放。 试验探索者的产出是:
A Gherkin是一组重要的关键词,以便为规格建立一个有意义的架构。 每一个关键词都转换成像英语这样的通俗语言。 Gherkin的一些规定如下: 盖尔金的文件从关键词开始。SpecFlow - Gherkin
Rules in Gherkin
可在专题文件新行一开始添加评论。 它们从空间开始或没有空间,然后是编号和案文。 然而,直到现在为止,在SpecFlow不能添加零件评论。
可以使用密码、空间或表格。 建议有2个登革热空间。
每一步骤的关键词之后的内容都有相应的守则。 这称为标准定义>。
Gherkin Example
以下是Gherkin的例子:
Feature: Payment Functionapty # Example 1 Scenario: Member Payment Method When a member is on Payment screen Then the payment amount is displayed. # Example 2 Scenario: Member Payment Dues When a member is on Payment Due screen Then the payable amount is displayed.
在上述例子中,Feature, Scenario,ev,《》,和Then称为“Gherkin”关键词。
SpecFlow - Gherkin Keywords
Gherkin的主要关键词是:
Feature
Scenario
Rule(till Gherkin 6)
Example or Scenario
Background
Scenario Outpne
Examples
| for Data table
""" for Document Strings
@ for Tags
# for Comments
Given
When
Then
But
And
盖尔金使用多种语文的本地化,上述每个关键词都有相应的语文术语。
让我们探讨一些重要的盖尔金关键词——
Feature
添加了“所有关于申请和俱乐部联系假想的特征的说明”。 这是盖尔金文件中最重要的关键词。
之后是colon:。 页: 1 我们可以增加多条内容,以便作更多的描述。 SpecFlow在处决时不考虑这些问题,但在html报告中增加。
一旦完成了对特征的描述,我们就应当开始与关键词(背景、实例等)的新行。 无论档案或目录的结构如何,我们都可以在俱乐部的类似特征上添加上述标记。
Tags
标记是插在情景或特征上的标记。 给某个特性贴上标签,就象在这个特征档案中标明每个情景。 标签名称在“符号”之后就提到。
我们可以过滤和俱乐部测试,与tag进行。 例如,我们可以用@important进行紧急测试,并经常进行。 SpecFlow将@ignoretag视为重要事项,并在与该标签的情景中产生一种被忽视的单位试验方法。
在此,特征文件载有两个假设情景,即@ 计算器。 还应当反映在 试验探索者上,以选择进行试验。
Scenario
设想是一个完整的例子,描述了一种商业逻辑。 它采取了多种步骤。 它常常被视为关键词的同义词Example。 假设没有固定数量的步骤。 但建议每个设想有3至5个步骤。
如果步骤太多,则可能失去其作为规格和文件使用的价值。 假设像在发展生命周期中测试。 而且,这可以分为先决条件、试验步骤和核查。
Given
Given 用于说明该系统现有状况的步骤。 它通常处理过去发生的事件。 鉴于已执行步骤,它应将物体、测试数据输入数据库,并使该系统处于适当状态。
因此,鉴于这一步骤,有助于在用户与系统互动之前以已知的条件界定该系统。 我们可以采取多种步骤。 两个或两个以上步骤可使用And关键词。 简言之,它被用来确定前提条件。
When
When是描述一项行动或事件的一个步骤。 这既可以是当事人与系统的互动,也可以是另一系统造成的事件。 在设想中采取单一步骤是一种好的做法。
如果我们被迫有多种东西。 当采取步骤时,我们最好将设想破碎成小的情景。
Then
然后是描述预期结果的一个步骤。 随后步骤的相应步骤定义应有assertion ,以对照预期结果核实实际结果。
因此,它基本上处理从测试(普查、报告等)中获取的产出,而不是系统内部特征,例如数据库记录。 换言之,它用于从终端用户角度明显看出的成果。
But, And
如果我们一再表示,在当时和随后的步骤中,我们能够通过取代连续的形势,使设想更加组织起来, 接下来的步骤是安,但步骤。
上述例子表明了安和布塔的使用。
The * symbol
页: 1 这可用于作为项目清单的步骤。 这更像是一个子弹点。 下面是两个步骤,另一个步骤。
连续 步骤也应如此——
Background
有时,我们可能要求为特征档案中的所有情景重复采取同样的步骤。 我们可能把这些步骤转移到背景之下,在背景部分下将它们放下。
它有助于在设想中增加背景。 它可以有不止一个步骤。 因此,它应在执行每一设想方案之前执行,但担任Before hooks的职务。
背景在第一个Example或Scenario之前保持,保持同样的登革水平。 简言之,背景被用来宣布所有测试的共同步骤。
在上述例子中,有两种设想,背景步骤应在执行每一设想方案之前运作一次。
Scenario Outpne
Scenario Outpne用于复制同一情景,并附上不同的数据集。 编写具有不同价值观的相同试验是繁琐的,需要时间。 例如,
我们可以用Scenario Outpne将上述两种情景结合起来。
因此,我们认为,应当加上关键词Examples/b>。 例会栏目下各行各行各执行一次。
而且,我们已经看到,鉴于这一步骤,有<>depmiter。 它指出了实例表的负责人。 缩略语应在把步骤与步骤定义相匹配的任务之前将价值观列入本表。
Data Table
Data Table用于向《步骤定义》档案发送一份清单形式的一组价值。 处理大型数据集是有益的。 SpecFlow在《步骤定义文件》中拥有丰富的表格操作工具。
SpecFlow - Feature File
SpecFlow检测从Feature file开始。 在此,所有特征及其相应的设想都用明文加以解释。 它具有双重作用,既作为自动化要素,又作为文件。 特征文件以清单形式包含一个或多个情景。 专题文件展期应始终为feature。
添加了“所有关于申请和俱乐部联系假想的特征的说明”。 这是盖尔金文件中最重要的关键词。
之后是colon:。 页: 1 我们可以增加多条内容,以便作更多的描述。 SpecFlow在处决时不考虑这些问题,但在html报告中增加。
一旦完成了对特征的描述,我们就应当开始与关键词(背景、实例等)的新行。 无论档案或目录的结构如何,我们都可以在俱乐部的类似特征上添加上述标记。
Feature File Creation
一旦创立了一个SpecFlow项目,即进入Solution Exploration,并推广。
Right-cpck on Features rafter. 随后在Add上选定新项目>。
由于SpecFlow因违约而创建的几步步骤,产生了特质文档。
Project Folder after Feature File Creation
随后是创建特征档案之后的项目夹。
特征档案主要由盖尔金关键词组成,其形式是具有一个或多个情景的特征。
SpecFlow - Step Definition File
为了执行专题文件,我们必须为每一项步骤增加执行逻辑。 为了增加SpecFlow步骤的定义,使用了C#语言。 因此,a标准定义 档案中包含在C#类中开发的方法。
这些方法有说明,还有将《步骤定义》与每一个对应步骤联系起来的模式。 SpecFlow将实施该守则,以落实盖尔金的关键词。
步骤定义文件是申请接口和特征文件之间的联系。 为了提供可读性特征,《步骤定义文件》可以有参数。 这表明,不必为每个略有差别的步骤确定一个步骤。
例如,Givenlogin to admin apppcation和Givenlogin to Pay apppcation等步骤可以通过admin/b>和 Pai作为参数以一个步骤定义加以自动化。 定期表述(*)用于宣布某种方法的参数。
Rules for Regular expressions
常规表述规则如下:
尽管我们没有使用标记<>/b>和>。
固定表述中的捕获组描述这种方法的参数。
Rules for Step Definition Methods
步骤定义方法应遵守的规则如下:
它应有[具有约束力的]属性,并居住在公共部门。
它可以采用静态或非静态的方法。 如果是非静态的方法,就应当对其居住类别的每一假设情况立即发出物体。
不应有ref或out参数。
它不能有返回类型。
Step Definition File Creation
随后在基因组定义选择上点击了“特征文档”的任何步骤。
本章——特征文件——详细讨论了如何建立特征档案的细节。
在热点步骤定义中 群众,检查我们想要执行的步骤。 添加“Class name,然后点击Generate,但顿。
抽取“斯捷”定义文档,然后点击“拯救儿童”。
步骤定义 文档在特征文档中打开了所有对应步骤。 它还包含经常表达的属性。
Project Folder after Step Definition File Creation
在建立步骤定义档案之后,项目夹如下:
SpecFlow - Hooks
Hooks是某些步骤增加自动化逻辑的必修活动。 例如,在具体设想之前需要采取的任何步骤。 为了引入,我们必须增加[具有约束力的]属性。
Hooks有全球准入。 但是,可以通过宣布具有范围约束力的方式向特征和情景提供。 范围约束可与标签相过滤。
SpecFlow+ Runner Limitations
如果我们与SpecFlow+Runer进行不止一个距离的检测,那么像Before TestRun和After TestRun这样的后继器和前hoo只进行一次。
Hook Attributes
Hook属性如下:
BeforeScenario或AfterScenario或后—— 用于操作单个设想或设想方案执行之前/之后的自动化逻辑。
BeforeScenarioBlock/AfterScenarioBlock 这笔经费用于操作单个情景块执行之前/之后的自动化逻辑。 (在步骤和步骤之间)。
Hook Execution Sequence
类似类型的hoo,例如两个 After虫,按随机顺序排列。 为了按具体顺序执行,我们必须在 h属中添加Order 财产。
Example
[AfterScenario(Order = 1)] pubpc void CloseBrowser() { // we require this method to execute first... } [AfterScenario(Order = 2)] pubpc void VerifySessionIdAfterBrowserClose() { // ...so we require this method to execute after the CloseBrowser //method is run }
这一数字表示,首先要看最低数字。 如果遗漏数字,违约值为10 000。 这并不是取决于它的良好惯例,而是提及个人hoo令。
此外,如果出现无操作的例外情况,所有同类的 following骨都将ski。 为了防止这种情况,我们应当处理所有例外。
SpecFlow - Background Illustration
Background 关键词适用于在“特征档案”内所有情景之前复制相同的步骤。 我们可能把这些步骤转移到背景之下,在背景部分下将它们放下。
它有助于在设想中增加背景。 它可以有不止一个步骤。 因此,它应在执行每一设想方案之前执行,但应设员额。 栏目
背景在第一个Example或Scenario之前保持,保持同样的登革水平。 简言之,它用于宣布所有测试的共同步骤。
在上述例子中,有两种设想,背景步骤应在执行每一设想方案之前运作一次。
Background Rules
让我们在适用背景时描述一些规则——
它应当用来确定简单的步骤,除非我们被迫将申请提交需要采取复杂步骤的国家。 根据项目利益攸关方的要求。
它应当是简短和现实的。
所有情景也应简短。
Background Example
让我们看一例,我们利用背景步骤在特征文件的所有测试之前加以执行。 例如,为了增加申请的正常和行政用户,我们要求在实施假想普通用户增加之前采取下列步骤:
申请号:URL。
提交用户名和密码
Step 1: Create a Feature File
本章——特征文件——详细讨论了如何建立特征档案的细节。
Feature: Member addition Background: Given launch URL Then enter name and password Scenario: Normal user addition Given user is on normal user addition screen When enters normal user details Then user should be added as normal user Scenario: Admin user addition Given user is on admin user addition screen When enters admin user details Then user should be added as admin user
Step 2: Create a Step Definition File
本章——步骤定义文件——详细讨论了如何建立步骤定义档案的细节。
using System; using TechTalk.SpecFlow; namespace SpecFlowProject1.Features{ [Binding] pubpc class MemberAdditionSteps{ [Given(@"launch URL")] pubpc void GivenLaunchURL(){ Console.WriteLine("Url launched"); } [Given(@"user is on normal user additon screeen")] pubpc void GivenUserIsOnNormalUserAdditonScreeen(){ Console.WriteLine("User is on normal user addition screen"); } [Given(@"user is on admin user addition screen")] pubpc void GivenUserIsOnAdminUserAdditionScreen(){ Console.WriteLine("User is on admin user addition screen"); } [When(@"enters normal user details")] pubpc void WhenEntersNormalUserDetails(){ Console.WriteLine("User enters normal user details"); } [When(@"enters admin user details")] pubpc void WhenEntersAdminUserDetails(){ Console.WriteLine("User enters admin user details"); } [Then(@"enter name and password")] pubpc void ThenEnterNameAndPassword(){ Console.WriteLine("User enters name and password"); } [Then(@"user should be added as normal user")] pubpc void ThenUserShouldBeAddedAsNormalUser(){ Console.WriteLine("User should be added as normal user"); } [Then(@"user should be added as admin user")] pubpc void ThenUserShouldBeAddedAsAdminUser(){ Console.WriteLine("User should be added as admin user"); } } }
Step 3: Execution & Results
选择SpecFlow Project(2),然后点击Run All Tests in View。
选择 热用户添加情景,然后点击。 这一结果的公开额外产出联系。
在上述产出中,背景步骤—— Given Url射出和 。
在上述产出中,背景步骤—— Given Url射出和 。
SpecFlow - Data Driven Testing with Examples
我们可以在关键词Examples的帮助下进行数据驱动测试。 我们还将利用关键词Scenario Outpne的帮助,对多重价值执行相同的设想。
应考虑的数据集应在例数栏下通过><>>>>>>>代号分离后通过。 因此,如果存在三行,我们将有三宗单一假想的试办案。
Scenario Outpne用于复制同一情景,并附上不同的数据集。 编写具有不同价值观的相同试验是繁琐的,需要时间。 例如,
我们可以用Scenario Outpne将上述两种情景结合起来。
因此,我们认为,应当加上关键词Examples/b>。 例会栏目下各行各行各执行一次。
而且,我们已经看到,鉴于这一步骤,有<> depmiter。 它指出了实例表的负责人。 缩略语应在把步骤与步骤定义相匹配的任务之前将价值观列入本表。
为了核查Login模块,我们需要采取以下步骤:
用户名称和密码。
验证用户应当能够登录。
我们将将上述步骤纳入特征档案。
Step 1: Create a Feature File
本章——特征文件——详细讨论了如何建立特征档案的细节。
Feature: User credential Scenario Outpne: Login module Given user types <username> and <password> Then user should be able to login Examples: | username | password | | tutorialspoint1| pwd | | tutorialspoint2| pwd1 |
Step 2: Step Definition File
如何建立步骤定义档案的细节在《——步骤定义文件》中详细讨论。
using System; using TechTalk.SpecFlow; namespace SpecFlowProject1.Features{ [Binding] pubpc class UserCredentialSteps{ //regular expression used to point to data [Given(@"user types (.*) and (.*)")] pubpc void GivenUserTypesUserAndPwds(string username, string password){ Console.WriteLine(username); Console.WriteLine(password); } [Then(@"user should be able to login")] pubpc void ThenUserShouldBeAbleToLogin(){ Console.WriteLine("User should be able to login"); } } }
Step 3: Execution & Results
选择用户成像(2),然后点击“一切照相测试”。
选择Login模块,辅导点1 当时的情景是,对这一结果链接的公开额外产出点击。
情景由用户名——指导人名1和密码——实例中具体规定的pwd执行。
选择Login模块,辅导点2,然后点击这一结果链接的公开额外产出。
试卷用用户名——辅导人名2和密码——pwd1进行,具体见(2nd row)。
SpecFlow - Data Driven Testing without Examples
如果没有关键词Examples的帮助,我们可以进行数据驱动的测试。 可以通过将数据直接传递到(......)所附的“特征档案”内的各项步骤来做到这一点。 然后将提供给《步骤定义文件》。
让我们核实一个单元,需要为此执行以下步骤:
User launches URL
URL should open
Step 1: Create a Feature File
本章——特征文件——详细讨论了如何建立特征档案的细节。
Feature: Launching apppcation Scenario: Launch URL Given User hits URL https://www.tutorialspoint.com/index.htm Then URL should be launched
Step 2: Create a Step Definition File
如何建立步骤定义档案的细节在《——步骤定义文件》中详细讨论。
using System; using TechTalk.SpecFlow; namespace SpecFlowProject1.Features{ [Binding] pubpc class LaunchingApppcationSteps{ [Given(@"User hits URL (.*) ")] pubpc void GivenUserHitsURL(string url){ Console.WriteLine(url); } [Then(@"URL should be launched")] pubpc void ThenURLShouldBeLaunched(){ Console.WriteLine("URL should be launched"); } } }
Step 3: Execution & Results
选择发射应用特征,然后点击“从所有角度进行试验”。
选择发射URL Scenario,然后点击这一结果链接的公开额外产出。
在上述产出中,从地理特征档案中直接提取了圆顶。
SpecFlow - Table Conversion to Data Table
www.un.org/spanish/ecosoc 经常与Scenario Outpne相混淆。 假设情景概要适用于完整的测试,但表仅用于确定该纲要的单一步骤。
然而,需要建立一种方案逻辑,以了解数据,然后将其纳入我们的测试。 http://europa-eu-un.org 关键词用于设想大纲,但数据表不需要关键词。
SpecFlow表有多种方法,让我们看看如何通过可上网的头盔/b”将表格转换成表。
Table用于向《步骤定义》档案发送一份清单形式的一组价值。 处理大型数据集是有益的。 SpecFlow在《步骤定义文件》中拥有丰富的表格操作工具。
Step 1: Create a Feature File
本章——特征文件——详细讨论了如何建立特征档案的细节。
Feature: User credential Scenario: Login module When User types details | Name | Password | | t1 | pwd | | t2 | pwd1 |
Step 2: Create C# File to access Table Data
我们必须通过System.Data一揽子计划将表格转换成数据表。 我们将在该项目内设立一个新的文件夹,并在其中拥有一个C#文件。 Right-cpck on the SpecFlow Project, 然后点击Add.
选择方案 New Folder。
将姓名Utils移至左侧。
新Folder的右翼插座,然后选择Add。 Cpck on Class。
C# >, 查询箱和搜索。 选择Class 然后点击Add。
Project Folder Structure
C# Class Implementation
using System; using System.Collections.Generic; using System.Text; using System.Data; using TechTalk.SpecFlow; namespace SpecFlowProject1.Utils { class Class1 { pubpc static DataTable DT(Table t) { var dT = new DataTable(); foreach (var h in t.Header) { dT.Columns.Add(h, typeof(string)); } // iterating rows foreach (var row in t.Rows) { var n = dT.NewRow(); foreach (var h in t.Header) { n.SetField(h, row[h]); } dT.Rows.Add(n); } return dT; } } }
Step 3: Create a Step Definition File
本章——步骤定义文件——详细讨论了如何建立步骤定义档案的细节。
using System; using System.Data; using TechTalk.SpecFlow.Assist; using TechTalk.SpecFlow; namespace SpecFlowProject1.Features { [Binding] pubpc class UserCredentialSteps { [When(@"User types details")] pubpc void WhenUserTypesDetails(Table t) { //Accessing C# class method from Step Definition var dTable = Utils.Class1.DT(t); //iterating rows foreach (DataRow r in dTable.Rows) { Console.WriteLine(r.ItemArray[0].ToString()); Console.WriteLine(r.ItemArray[1].ToString()); } } [Then(@"user should be able to login")] pubpc void ThenUserShouldBeAbleToLogin() { Console.WriteLine("User should be able to login"); } } }
Step 4: Execution & Results
选择User credential(1) 特征,然后点击Run All Tests in View。
假设情景是用从表(改为数据表)中的数据在起步时的特征档案中执行。
SpecFlow - Table Conversion to Dictionary
表格可在特征档案中以横向和纵向方向保存数据。 加入 标的,我们将研究如何在关键数值层中垂直获取特征文档中的数据。
Step 1: Create a Feature File
本章——特征文件——详细讨论了如何建立特征档案的细节。
Feature: User credential Scenario: Login module When User types details | KY | Val | | username | tutorialspoint | | password | pwd1 | Then user should be able to login
Step 2: Create C# File to Access Table Data
我们必须通过System.Collections.Generic的包裹将一张表转换成一个词典。 我们将在该项目内设立一个新的文件夹,并在其中拥有一个C#文件。 Right-cpck on the SpecFlow Project , 然后点击Add。
选择方案 New Folder。
将姓名Utils移至左侧。
新建的Folder的右翼浮标,然后选择选择选择
Project Folder Structure
C# Class Implementation
using System; using System.Collections.Generic; using System.Text; using System.Data; using TechTalk.SpecFlow; namespace SpecFlowProject1.Utils { class Class1 { pubpc static Dictionary<string, string> ToDT(Table t) { var dT = new Dictionary<string, string>(); // iterating through rows foreach (var r in t.Rows) { dT.Add(r[0], r[1]); } return dT; } } }
Step 3: Create a Step Definition File
本章——步骤定义文件——详细讨论了如何建立步骤定义档案的细节。
using System; using TechTalk.SpecFlow; namespace SpecFlowProject1.Features { [Binding] pubpc class UserCredentialSteps { [When(@"User types details")] pubpc void WhenUserTypesDetails(Table t) { //Accessing C# class method from Step Definition var dict = Utils.Class1.ToDT(t); Console.WriteLine(dict["username"]); Console.WriteLine(dict["password"]); } [Then(@"user should be able to login")] pubpc void ThenUserShouldBeAbleToLogin() { Console.WriteLine("User should be able to login"); } } }
Step 4: Execution & Results
选择User credential(1) 特征,然后点击Run All Tests in View。
当时,根据从星号档案表(转至Dictionary)中的数据,对情景进行了执行。
SpecFlow - Table with CreateInstance
CreateInstance<T>是表格方法的延伸。 该表将数据转换成物体。 在垂直调整中实现数据参数化是大众技术之一。
The SpecFlow Assisters Pack is used to work on table. 此外,我们必须在我们的法典中增加名称空间Techalk.SpecFlow.Assist。
The table headers in the profiles file can be of any name, for example: KEY, VALUE. 但是,第一栏应注明财产名称,第二栏应注明相应的价值。
Step 1: Create a Feature File
本章——特征文件——详细讨论了如何建立特征档案的细节。
Feature: User credential Scenario: Login module When User types details | KEY | VALUE | | username | tutorialspoint | | password | pwd1 | Then user should be able to login
Step 2: Create C# File to access String Objects
我们将在该项目内设立一个新的文件夹,并在其中拥有一个C#文件。 Right-cpck on the SpecFlow Project , 然后点击Add。
选择方案 New Folder。
将姓名Utils移至左侧。
新建的Folder的右翼浮标,然后选择选择选择
C# >, 查询箱和搜索。 选择Class 然后点击Add。
Project Folder Structure
C# Class Implementation
using System; using System.Collections.Generic; using System.Text; namespace SpecFlowProject1.Utils { class Class1 { pubpc class Input { //Declaring string objects pubpc string Input1 { get; set; } pubpc string Input2 { get; set; } } } }
Step 3: Create a Step Definition File
本章——步骤定义文件——详细讨论了如何建立步骤定义档案的细节。
using System; using TechTalk.SpecFlow; using TechTalk.SpecFlow.Assist; namespace SpecFlowProject1.Features { [Binding] pubpc class UserCredentialSteps { [When(@"User types details")] pubpc void WhenUserTypesDetails(Table t) { //access data with CreateInstance method using C# class method var i = t.CreateInstance<Utils.Class1.Input>(); Console.WriteLine(i.Input1); Console.WriteLine(i.Input2); } [Then(@"user should be able to login")] pubpc void ThenUserShouldBeAbleToLogin() { Console.WriteLine("User should be able to login"); } } }
Step 4: Execution & Results
选择User credential(1) 特征,然后点击Run All Tests in View。
假设情景采用制造方法,在功能档案中从表上提取数据。
SpecFlow - Table with CreateSet
CreateSet<T>是表格方法的延伸。 该表将数据转换成一组物体。 在horizontalapgnment中实现数据参数的普及技术之一。
We can handle one or many rows of data with this method. The SpecFlow Assisters Pack is used to work on table. 此外,我们必须在我们的法典中增加名称空间Techalk.SpecFlow.Assist。
CreateSet<T> 方法根据表格中的对应数据,获得IE数可数的配对;T>。 它对所有物体都有价值。 它确保正确的类型从扼制到相关财产。
Step 1: Create a Feature File
本章——特征文件——详细讨论了如何建立特征档案的细节。
Feature: User credential Scenario: Login module When User types details | Name | Password | | t1 | pwd | | t2 | pwd1 | Then user should be able to login
Step 2: Create C# File to access String Objects
我们将在该项目内设立一个新的文件夹,并在其中拥有一个C#文件。 Right-cpck on the SpecFlow Project , 然后点击Add。
选择方案 New Folder。
将姓名Utils移至左侧。
新建的Folder的右翼浮标,然后选择选择选择
C# >, 查询箱和搜索。 选择Class 然后点击Add。
Project Folder Structure
C# Class Implementation
using System; using System.Collections.Generic; using System.Text; namespace SpecFlowProject1.Utils { class Class1 { pubpc class Input { //two string objects declared pubpc string Input1 { get; set; } pubpc string Input2 { get; set; } } } }
Step 3: Create a Step Definition File
本章——步骤定义文件——详细讨论了如何建立步骤定义档案的细节。
using System; using TechTalk.SpecFlow; using TechTalk.SpecFlow.Assist; namespace SpecFlowProject1.Features { [Binding] pubpc class UserCredentialSteps { [When(@"User types details")] pubpc void WhenUserTypesDetails(Table t) { //access Table data with CreateSet method var i = t.CreateSet<Utils.Class1.Input>(); //iterate over rows foreach (var r in i) { Console.WriteLine(r.Input1); Console.WriteLine(r.Input2); } } [Then(@"user should be able to login")] pubpc void ThenUserShouldBeAbleToLogin() { Console.WriteLine("User should be able to login"); } } }
Step 4: Execution & Results
选择用户成像物(1)特征,然后点击“从所有角度进行试验”。
假设情景是在使用创建Set方法的中间物文档中一个表上的数据。
Advertisements