我已经构建了一个利用Selenium进行测试的UI测试套件和框架。在我的框架中,我使用了Test类继承的BaseTest类,以简化我的SetUp和Teardown。在基础测试中,我做了一些事情,包括启动驱动程序,初始化记录器,以及最大化浏览器以进行功能测试。
我的问题是,当我初始化记录器时,我需要为记录器传递一个名称。我想利用实际测试的命名空间加上实际的测试名称,这样我就可以过滤各个测试的日志,以帮助诊断测试问题和错误。
这就是我目前设置基础测试的方式:
[SetUp]
public void RemoteSetUp()
{
string LoggerName = GetType().Namespace + "_" + System.Reflection.MethodBase.GetCurrentMethod();
logger = LogManager.GetLogger(LoggerName);
DesiredCapabilities capabilities = DesiredCapabilities.InternetExplorer();
capabilities.AcceptInsecureCerts = true;
driver = new RemoteWebDriver(new Uri("http://10.16.199.64:4444/wd/hub"), capabilities);
driver.Manage().Window.Maximize();
}
这只是我想要的一半。在我声明LoggerName的地方,它返回TEST&#S; S命名空间(不是基本测试的命名空间),但System.Reflection.MethodBase.GetCurrentMethod();
返回BASE TEST' S方法名称。这导致我的LoggerName等于[TestNamespace]_[BaseTestMethodName]
。
如何让我的LoggerName等于[TestNamespace]_[TestMethodName]
?
答案 0 :(得分:0)
不确定您的BaseTest是什么样的。以下是获得基础类型的方法。注意:我用Nullable测试了这个:
var t = typeof(BaseTest<int>);
if (t.GetType().IsGenericType &&
t.GetType().GetGenericTypeDefinition() == typeof(BaseTest<>))
{
var type = t.GetGenericArguments()[0];
}