问题标签 [specrun]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assert - 即使specflow在场景中间失败,我可以让specflow做最后一件事吗?
因为我在我的 specflow 场景中更改了重要配置,所以我希望我的 specflow 场景在每次完成场景时重置配置,即使它在中间失败。[AfterScenario] 只有在没有失败的情况下才进行工作,但即使失败,我也需要一些东西来重置我的配置。
谢谢!
c# - 如何使用动态值运行 Specflow/Specrun 特征文件
我对 Specflow/Specrun 和 C# 编程非常陌生。我需要帮助来解决我面临的问题。
我有一个查询数据库的 Specrun 功能文件。以下是功能文件的代码:
这绝对没问题。但我想注释第二行并在运行时使用 default.srprofile 文件指定数据库名称。
我想runtests.cmd
使用 default.srprofile 文件执行文件(从命令行)并在运行时提供数据库名称。有可能实现这一目标吗?
testing - SpecRun.exe:从命令行运行 .feature 或 .playlist 文件
再会。我有几个 .feature 文件:
1.特点
2.特点
1.播放列表
2.播放列表
等等
我可以在 Visual Studio 中分别运行它们:
-调试模式下的任何功能文件
- 任何带有测试资源管理器的播放列表。
但是如果我需要从命令行运行其中一个,我应该怎么做?
如果我使用SpecRun.exe
运行
SpecRun.exe run %profile%.srprofile "/baseFolder:%~dp0\bin\Debug" /log:specrun.log
这将启动所有 .feature 文件中的所有场景。
specflow - Specrun - 线程延迟
我有一个用 1.5.2 编写的测试c#
,我使用的是SpecRun
1.5.2 版。
我的部分Default.srprofile
外观如下:
有一堆测试使用数据库中的一些数据,所以测试首先创建这些数据。不幸的是,当 5 个线程并行运行时,我偶尔会得到一个sql deadlock error
很好的结果,因为这些线程试图同时写入数据。
有没有机会增加线程执行的延迟?有什么比线程应该在 5s 秒间隔内启动或类似的东西要说的吗?
c# - 需要在规范运行中并行执行测试
如何并行运行我的自动化脚本。我的代码在C#.net中使用 specflow。
我已经改变了我的单元测试提供者如下:
multithreading - ChromeDriver 和 SpecRun 问题:每个套接字地址(协议/网络地址/端口)通常只允许使用一次
当使用 ChromeDriver 通过 SpecRunner 在 C# 中运行 Selenium 自动化测试时(尤其是在多线程中运行时),我们会间歇性地看到这个异常:
无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 每个套接字地址(协议/网络地址/端口)通常只允许使用一次
它在每次运行大约 20% 的测试中随机发生,并且随着添加更多线程而变得更糟。
我们真的束手无策,所以欢迎任何想法/建议。
c# - 在 specflow 场景之间共享数据
在我们的应用程序中,我需要打开 3 个完全相同的文档,对于每个文档,我都有一个带有唯一定位器的按钮,因为我们正在并行执行测试,我需要知道哪个文档已经打开并打开另一个未使用的文档,我是无法同时打开一个文档。我的场景应该共享哪些文档已打开以及哪些可用于编辑的状态。是否可以在场景之间共享此类数据?
我已经检查了所有可能的内容IObjectContainer
并且是使用创建GlobalContainer
的var Container = new ContainerBuilder().CreateGlobalContainer();
,但没有任何效果。
更新:
已经找到解决方案,我们应该将 TestThreadContext 传递给 hooks 构造函数,但这只有在我们使用一个线程时才有效:
如果您想在并行测试场景之间共享数据,您应该在 GlobalStep(SpecRun) 中创建新的 AppDomain 并将您的类与可以返回数据和更新数据的数据和方法一起传递给这个应用程序域,这可以使用yourDomain.SetData("youKey", new yourClass)
,然后在钩子你应该得到你的域(如何获得所需的应用程序域)并从域中得到你添加的类var data = domain.GetData("yourKey")
,然后你可以调用你的方法,data.YourMethod();
你也应该锁定你的方法中的行,以便线程安全使用lock(object) {your code}
。
specflow - SpecRun:如何运行按 .feature 文件过滤的测试
我正在尝试使用 SpecRun 运行测试。我想使用 .feature 文件运行它们,但到目前为止我还没有成功:(
我将其用作过滤器:
/filter:testpath:Feature:FeatureFile.feature
但没有运行测试。
如何在 SpecRun 中指定 .feature 文件?
谢谢
selenium-webdriver - 执行硒等待超过 10 分钟时测试执行的 Specrun 超时
使用 Specrun 1.5.2 和 Specflow 2.1.0 运行我的测试。我遇到了测试不断中止使用硒等待很长时间的问题(因为我必须这样做,现在有办法解决它)。
无论我是从命令行还是使用 C# 从 Visual Studio Enterprise 中运行测试,我都会收到以下异常:
TechTalk.SpecRun.Framework.SpecRunException:至少一个测试线程中止。---> System.ServiceModel.CommunicationObjectFaultedException:通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信,因为它处于故障状态。
服务器堆栈跟踪:在 System.ServiceModel.Channels.CommunicationObject.ThrowIfFaulted() 在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
在 [0] 处重新引发异常:在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型) 在 TechTalk.SpecRun 的 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)。 Framework.IOutProcTestAssemblyExecutor.RunTests(TestThreadState testThreadState) at TechTalk.SpecRun.Framework.TestThread.Run(ITestExecutionManager executionManagerForRun) at TechTalk.SpecRun.Framework.AsyncTestThreadRunner.RunSync(TestExecutionManager executionManager) --- 内部异常堆栈跟踪结束--- 结果: 测试框架错误:至少一个测试线程中止。总计:1(测试执行:0) 成功:0 忽略:0 待处理:0 跳过:0 失败:0