【发布时间】:2016-07-27 13:44:08
【问题描述】:
上下文
我配置了执行 Selenium C# 测试的 Jenkins 作业。 在创建工作时,我必须提供两个值:
- 构建我的解决方案的分支
- 应测试的网址
详细说明
Jenkins 执行以下步骤:
- 结帐选择的分支
- 将存储在 AppSettings 中的 URL 替换为用户提供的 URL(“TestedURL”)
- 构建解决方案
-
执行vstest.console.exe工具(Visual Studio 2012自带,路径如下:“Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow”)如下:
vstest.console.exe "c:\myProject\bin\Debug\myProject.Test.dll"
问题
我想确保测试正确的 URL:我想在 Jenkins/vstest.console.exe 输出的控制台输出中显示 URL。
我根据 StackOverflow 上的不同答案修改了我的代码。
URL 直接在 Visual Studio 的测试输出中可见。不幸的是,我仍然没有在 vstest.console.exe/Jenkins 输出中看到任何测试 URL。
如何在输出中显示 URL(如何修改 printMessage 方法)?
我的代码如下:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Configuration;
using System.Diagnostics;
namespace My.Test
{
[TestClass]
public class MyTests
{
IWebDriver driver;
string baseURL;
[TestInitialize]
public void Initialize()
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// URL is replaced by the value provided in Jenkins
baseURL = config.AppSettings.Settings["TestedURL"].Value;
driver = new ChromeDriver();
driver.Navigate().GoToUrl(baseURL);
printMessage(string.Format("Tested URL: '{0}'", baseURL));
}
private TestContext testContextInstance;
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
private void printMessage(string message)
{
// Method should display custom message in both Visual Studio output and Jenkins (vstest.console.exe) output
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.Listeners.Add(new ConsoleTraceListener());
Trace.WriteLine(message);
Debug.WriteLine(message);
TestContext.WriteLine(message);
Console.WriteLine(message);
}
}
}
【问题讨论】:
标签: c# selenium jenkins automated-tests