Url 未从 appsettings.json 读取
Url is not being read from appsettings.json
如果我提出任何愚蠢的问题,请提前致歉,因为这对我来说都是全新的,但我基本上需要将 cs 文件中的几个硬编码 URL 存储到 json 文件.
这不是一个网络项目,这个项目运行是一系列通过 NUNit 的 selenium 自动化测试它是一个 .NETCore 应用程序
所以我的 appsettings.json 看起来像:
{
"Development": {
"urlName": "https://dev.website.com"
}
}
我的 Program.cs 文件看起来像
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
namespace Automation
{
class Program
{
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddEnvironmentVariables();
config.AddCommandLine(args);
});
}
}
我基本上是在我的启动“BaseTest”class 中创建一个构造函数,这是在执行测试本身之前首先获取 运行 的 class,构造函数如下:
protected IConfiguration _config;
public BaseTest()
{
_config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
baseUrl = _config["urlName"];
}
想法是,一旦 BaseTest class 中的这一行是 运行,它就会从 json 文件
中提取 URL
driver.Navigate().GoToUrl(baseUrl);
但它返回为 null,我知道我遗漏了一些东西,但我不知道是什么,或者如果我的方向正确,请帮助。
appsettings.json 文件也设置为始终复制
urlName
在一个名为 Development
的 property/section 中
var baseUrl = _config.GetSection("Development")["urlName"]
注意 :还有许多其他方法可以以类型化的方式执行此操作,将其插入.net core,将其更多地集成简洁地使用 DI 并可选择使用 IOptions
,但这与您所拥有的一致
如果你安装了 Microsoft.Extensions.Configuration.Binder
nuget,你也可以想象做这样的事情
public class Development
{
public Uri UrlName { get; set; }
}
...
var myConfig = _config.GetSection(nameof(Development)).Get<Development>();
如果您想使用选项模式 one of many 方法,请添加 Microsoft.Extensions.Options.ConfigurationExtensions
nuget 并执行以下操作
services.Configure<Development>(_config.GetSection(nameof(Development)));
如果我提出任何愚蠢的问题,请提前致歉,因为这对我来说都是全新的,但我基本上需要将 cs 文件中的几个硬编码 URL 存储到 json 文件.
这不是一个网络项目,这个项目运行是一系列通过 NUNit 的 selenium 自动化测试它是一个 .NETCore 应用程序
所以我的 appsettings.json 看起来像:
{
"Development": {
"urlName": "https://dev.website.com"
}
}
我的 Program.cs 文件看起来像
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
namespace Automation
{
class Program
{
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddEnvironmentVariables();
config.AddCommandLine(args);
});
}
}
我基本上是在我的启动“BaseTest”class 中创建一个构造函数,这是在执行测试本身之前首先获取 运行 的 class,构造函数如下:
protected IConfiguration _config;
public BaseTest()
{
_config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
baseUrl = _config["urlName"];
}
想法是,一旦 BaseTest class 中的这一行是 运行,它就会从 json 文件
中提取 URLdriver.Navigate().GoToUrl(baseUrl);
但它返回为 null,我知道我遗漏了一些东西,但我不知道是什么,或者如果我的方向正确,请帮助。
appsettings.json 文件也设置为始终复制
urlName
在一个名为 Development
var baseUrl = _config.GetSection("Development")["urlName"]
注意 :还有许多其他方法可以以类型化的方式执行此操作,将其插入.net core,将其更多地集成简洁地使用 DI 并可选择使用 IOptions
,但这与您所拥有的一致
如果你安装了 Microsoft.Extensions.Configuration.Binder
nuget,你也可以想象做这样的事情
public class Development
{
public Uri UrlName { get; set; }
}
...
var myConfig = _config.GetSection(nameof(Development)).Get<Development>();
如果您想使用选项模式 one of many 方法,请添加 Microsoft.Extensions.Options.ConfigurationExtensions
nuget 并执行以下操作
services.Configure<Development>(_config.GetSection(nameof(Development)));