现在,我的编码 UI 测试使用它们的 app.config 来确定它们执行的域,该域与环境具有 1-1 关系。为了简化它:
- 测试网
- www.UAT.com
- www.prod.com
在 App.config 中我有类似的内容:
<configuration>
<appSettings>
<add key="EnvironmentURLMod" value ="test"/>
为了在不同的环境中运行测试,我手动更改运行之间的值。例如我打开浏览器是这样的:
browserWindow.NavigateToUrl(new Uri("http://www."
+ ConfigurationManager.AppSettings.Get("EnvironmentURLMod")
+ ".com"));
显然这是不优雅的。我想我有一个愿景,我们会为每次运行添加一个新的 app.config,但作为剧透,此测试将在大约 10 个环境中运行,而不是 3 个,并且它可能运行的环境可能会发生变化。
我知道我可以将这些环境 URL 修改解耦到另一个 XML 文件,并使测试按顺序访问它们数据驱动场景 https://msdn.microsoft.com/en-us/library/ms182527.aspx。但即便如此,这似乎也不是我所需要的,因为如果一个环境失败,那么整个测试就会崩溃。我见过环境变量 http://www.dotnetcurry.com/visualstudio/920/environment-variables-codedui-test-visual-studio作为建议,但这需要为每个环境创建一个测试代理,修改其注册表,并在每个环境上运行测试。如果这就是它所需要的,那么当然,但是似乎需要大量的虚拟机带宽来用于字符串的集合。
在理想的情况下,我希望将这些 URL mods 与测试设置、MTM 环境或构建等相关联。我想为每个域执行一套测试并分别报告。
简而言之,参数化这些测试的最佳方法是什么?有没有一种方法不涉及对新构建进行排队或删除配置文件?数据驱动测试是答案吗?我的解决方案结构是否不正确?这似乎应该是一个常见的场景,但我的谷歌搜索并没有完全让我到达那里。
任何和所有的帮助表示赞赏。
这里的答案是数据驱动测试,不幸的是,即使有“比大多数更好”的选项,也没有万能的灵丹妙药。
使用任何数据源,您都可以在多个环境(或您能想到的任何其他变量)中迭代测试,并基本上返回 3 个不同的测试结果 - 每个排列或数据行一个。However您必须更新断言以显示当前正在执行的环境,因为默认情况下测试结果仅显示“数据行 0”或类似内容。如果测试通过,您将无法得知成功运行的数据行中实际包含什么内容,unless您将此信息嵌入到操作日志中!我很幸运,我的用例会自动执行此操作,因为我只是使用 URL mod,但其他人可能需要自己执行此操作。
为了允许动态更改我们正在测试的环境,我们选择使用 TestCase 数据源。这具有很大的灵活性——例如可能比使用数据库或 XML 更灵活——但它也有其自身的缺点。与所有数据驱动场景一样,您必须将测试用例 ID 本质上“硬编码”到测试方法上方的装饰器中(因为它被视为属性)。我希望当我们想要更改我们使用的测试用例时,至少可以将 app.config 放入构建放置位置,但看起来我们必须在解决方案中进行查找+替换。
如果有人知道将测试 ID 或连接字符串的任何其他部分与代码分离的更好方法,我将在这里给您答案。对于其他人,您可以找到有关的更多信息MSDN https://msdn.microsoft.com/en-us/library/ee624082.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)