我正在为我们的自动化测试平台提出一些想法,并一直在寻找Selenium的测试运行者。
我将记录的Selenium C#脚本包装在MbUnit测试中,该测试通过MbUnit NAnt任务触发。 Selenium测试客户端创建如下:
selenium = new DefaultSelenium("host", 4444, "*iexplore", "http://[url]/");
如何将主机,端口和网址设置传递到测试中,以便通过NAnt任务控制其值?
例如,我可能有多个Selenium RC服务器在监听,我希望使用相同的测试代码传递每个服务器地址,而不是在测试中嵌入设置。
我使用我编写的自定义NAnt任务模拟了一种方法,但它目前不是最优雅的解决方案,我想知道是否有更简单的方法来完成我想要做的事情。
非常感谢有人可以提供帮助。
答案 0 :(得分:1)
感谢到目前为止的回复。
环境变量可以工作,但是,我们可以通过单个测试程序集运行并行测试,因此我不希望在执行期间覆盖设置,这可能会破坏另一个测试。虽然有趣的想法,谢谢,我估计我可以在其他领域使用它。
我当前的解决方案涉及在MbUnit任务之上构建自定义NAnt任务,这允许我将其他主机,端口,URL设置指定为属性。然后将它们保存为构建目录中的配置文件,然后由测试程序集读入。这对我来说有点“笨拙”,因为我的测试需要继承特定的类。还不错,但我希望减少依赖性并专注于测试。
也许我太担心了!
答案 1 :(得分:1)
我有一个基类用于所有测试装置,它具有以下设置代码:
[FixtureSetUp]
public virtual void TestFixtureSetup ()
{
BrowserType = (BrowserType) Enum.Parse (typeof (BrowserType),
System.Configuration.ConfigurationManager.AppSettings["BrowserType"],
true);
testMachine = System.Configuration.ConfigurationManager.AppSettings["TestMachine"];
seleniumPort = int.Parse (System.Configuration.ConfigurationManager.AppSettings["SeleniumPort"],
System.Globalization.CultureInfo.InvariantCulture);
seleniumSpeed = System.Configuration.ConfigurationManager.AppSettings["SeleniumSpeed"];
browserUrl = System.Configuration.ConfigurationManager.AppSettings["BrowserUrl"];
targetUrl = new Uri (System.Configuration.ConfigurationManager.AppSettings["TargetUrl"]);
string browserExe;
switch (BrowserType)
{
case BrowserType.InternetExplorer:
browserExe = "*iexplore";
break;
case BrowserType.Firefox:
browserExe = "*firefox";
break;
default:
throw new NotSupportedException ();
}
selenium = new DefaultSelenium (testMachine, seleniumPort, browserExe, browserUrl);
selenium.Start ();
System.Console.WriteLine ("Started Selenium session (browser type={0})",
browserType);
// sets the speed of execution of GUI commands
if (false == String.IsNullOrEmpty (seleniumSpeed))
selenium.SetSpeed (seleniumSpeed);
}
然后我只是为测试运行器提供配置。文件:
答案 2 :(得分:0)
无论何时我需要使用NAnt与外部实体集成,我最终都会使用 exec任务或编写自定义任务。鉴于你发布的信息,看起来你自己写的确是一个很好的解决方案,但你说你对它不满意。你能详细说明为什么你认为你当前的解决方案不是优雅的吗?
不知道内部详细信息,您似乎已经通过自定义任务很好地解决了这个问题。从我所听到的,我就是这样做的。
也许一个新的解决方案会及时显示出来,但现在要点亮自己!
答案 3 :(得分:0)
对于MSBuild我使用环境变量,我在我的CC.NET配置中创建它们然后它们将在脚本中可用。我认为这对你也有用。