업무에서 사용한 C#의 편리한 라이브러리
소개
자신의 동기부여를 포함해 Qiita에 뭔가 투고를 하려고 생각해 반년이 지나 버렸습니다.
이번 어드벤트 캘린더를 계기에 투고해 나가려고 생각한 대로입니다.
너무 알려진 라이브러리이기 때문에 도움이되지 않으면 죄송합니다.
많이 소개하고 싶은 것도 있습니다만, 이번 제가 소개하고 싶은 것은 아래와 같습니다.
※SEO 대책의 테스트나, SIer 시대의 테스트 항목 소화 등에 사용하고 있었습니다.
Selenium
옛날부터 있는 클라이언트 체크 라이브러리의 하나입니다만, 다시 소개를 하겠습니다.
dotnet 명령으로 프로젝트를 만들어 봅시다.
※dotnet SDK에 관해서는 Download .NET (Linux, macOS, and Windows) 로부터 다운로드를 부탁합니다.
dotnet new nunit -o SeleniumUITest
실행하면 아래와 같은 cs파일이 생길까 생각합니다.
UnitTest1.cs public class Tests
{
[SetUp]
public void Setup()
{
}
[Test]
public void Test1()
{
Assert.Pass();
}
}
다음으로 프로젝트에 Selenium을 추가해 보겠습니다.
dotnet add package Selenium.WebDriver
dotnet add package Selenium.WebDriver.ChromeDriver
여기에서 쉽게 코드를 추가합니다.
UnitTest1.cs public class Tests
{
private OpenQA.Selenium.IWebDriver webDriver = null;
[SetUp]
public void Setup()
{
var options = new ChromeOptions();
// 2つのオプションを追加
// 1つ目ブラウザを立ち上げない
// 2つ目プライベートモードで開く
options.AddArguments("--headless", "--incognito");
webDriver = new OpenQA.Selenium.Chrome.ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);
}
[Category("Assert True Test")]
[TestCase("https://qiita.com/nariakiraHara/items/f1b4d091ed447a283d8d", "title", "業務で使用したC#の便利ライブラリ - Qiita")]
public void Test1(string url, string tagName, string content)
{
AssertTrueTest(url, tagName, content);
}
private void AssertTrueTest(string url, string tagName, string content)
{
webDriver.Navigate().GoToUrl(url);
var titleInfo = webDriver.Title;
Assert.AreEqual(content, titleInfo, "タイトルを間違えています。");
}
[OneTimeTearDown]
public void Dispose()
{
if(webDriver != null)
{
webDriver.Quit();
webDriver.Dispose();
}
}
}
테스트 내용으로서는 건네받은 TestCase의 Url, tag명, 컨텐츠를 건네줍니다.
Selenium에서 Url에 액세스하여 태그 내용과 예상 결과가 올바른지 확인합니다.
◎ 실제 클라이언트에서 테스트 할 수 있기 때문에 편리합니까?
ExcelDataReader
엑셀의 데이터를 읽을 수 있는 라이브러리가 됩니다.
테스트 항목을 작성한 후, 로드할 것으로 예상되는 결과가 맞는지 위에서 Selenium을 사용하여 확인하기도 했습니다.
프로젝트를 만들겠습니다.
dotnet new console -o ExcelReadSample
라이브러리를 넣습니다.
dotnet add package ExcelDataReader
dotnet add package ExcelDataReader.DataSet
dotnet add package System.Text.Encoding.CodePages
이번은 샘플로서 아래와 같은 Excel을 작성해, Console 출력해 보고 싶습니다.
프로젝트에 "resources"폴더를 추가하고 Excel을 저장합니다.
이런 느낌이 들었습니다.
Program.cs class Program
{
// 先程の画像のExcel Data.xlsxを読み込む
private static readonly string DATA_PATH = @"resources/Data.xlsx";
static void Main(string[] args)
{
Console.WriteLine("Start Excel Read");
var app = new Program();
app.Run();
Console.WriteLine("End Excel Read");
}
public void Run()
{
var ds = ReadData(DATA_PATH);
foreach(DataTable tbl in ds.Tables) {
Console.WriteLine($"シート名 {tbl.TableName}");
// 1行ずつ見ていく
for(var j = 0; j < tbl.Rows.Count; j++) {
if (j == 0) continue;
// 1カラムずつ見ていきます
for(var i=0; i<tbl.Columns.Count; i++) {
Console.Write($"{tbl.Rows[j][i]} ");
}
Console.WriteLine("");
}
}
}
private DataSet ReadData(string path)
{
DataSet ds = null;
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
try {
// ファイルパスからExcelを読み込む
using(var stream = File.Open(path, FileMode.Open, FileAccess.Read)) {
using(var reader = ExcelReaderFactory.CreateReader(stream)) {
ds = reader.AsDataSet();
}
}
}
catch(Exception ex) {
Console.Error.WriteLine(ex.Message);
}
return ds;
}
}
출력 결과
Start Excel Read
シート名 Sheet1
1 https://qiita.com/ title Qiitaだよ
2 https://qiita.com/ h1 はじめに
3 https://qiita.com/ h1 僕はトムではありません
4 https://qiita.com/ title はは
End Excel Read
이런 느낌의 출력 결과가 됩니다.
Excel을 테스트 케이스처럼 만들었고 Selenium을 사용하여 테스트를 테스트했습니다.
원한다면 참고해주세요 ^^
Reference
이 문제에 관하여(업무에서 사용한 C#의 편리한 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nariakiraHara/items/f1b4d091ed447a283d8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
dotnet new nunit -o SeleniumUITest
public class Tests
{
[SetUp]
public void Setup()
{
}
[Test]
public void Test1()
{
Assert.Pass();
}
}
dotnet add package Selenium.WebDriver
dotnet add package Selenium.WebDriver.ChromeDriver
public class Tests
{
private OpenQA.Selenium.IWebDriver webDriver = null;
[SetUp]
public void Setup()
{
var options = new ChromeOptions();
// 2つのオプションを追加
// 1つ目ブラウザを立ち上げない
// 2つ目プライベートモードで開く
options.AddArguments("--headless", "--incognito");
webDriver = new OpenQA.Selenium.Chrome.ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);
}
[Category("Assert True Test")]
[TestCase("https://qiita.com/nariakiraHara/items/f1b4d091ed447a283d8d", "title", "業務で使用したC#の便利ライブラリ - Qiita")]
public void Test1(string url, string tagName, string content)
{
AssertTrueTest(url, tagName, content);
}
private void AssertTrueTest(string url, string tagName, string content)
{
webDriver.Navigate().GoToUrl(url);
var titleInfo = webDriver.Title;
Assert.AreEqual(content, titleInfo, "タイトルを間違えています。");
}
[OneTimeTearDown]
public void Dispose()
{
if(webDriver != null)
{
webDriver.Quit();
webDriver.Dispose();
}
}
}
엑셀의 데이터를 읽을 수 있는 라이브러리가 됩니다.
테스트 항목을 작성한 후, 로드할 것으로 예상되는 결과가 맞는지 위에서 Selenium을 사용하여 확인하기도 했습니다.
프로젝트를 만들겠습니다.
dotnet new console -o ExcelReadSample
라이브러리를 넣습니다.
dotnet add package ExcelDataReader
dotnet add package ExcelDataReader.DataSet
dotnet add package System.Text.Encoding.CodePages
이번은 샘플로서 아래와 같은 Excel을 작성해, Console 출력해 보고 싶습니다.
프로젝트에 "resources"폴더를 추가하고 Excel을 저장합니다.
이런 느낌이 들었습니다.
Program.cs
class Program
{
// 先程の画像のExcel Data.xlsxを読み込む
private static readonly string DATA_PATH = @"resources/Data.xlsx";
static void Main(string[] args)
{
Console.WriteLine("Start Excel Read");
var app = new Program();
app.Run();
Console.WriteLine("End Excel Read");
}
public void Run()
{
var ds = ReadData(DATA_PATH);
foreach(DataTable tbl in ds.Tables) {
Console.WriteLine($"シート名 {tbl.TableName}");
// 1行ずつ見ていく
for(var j = 0; j < tbl.Rows.Count; j++) {
if (j == 0) continue;
// 1カラムずつ見ていきます
for(var i=0; i<tbl.Columns.Count; i++) {
Console.Write($"{tbl.Rows[j][i]} ");
}
Console.WriteLine("");
}
}
}
private DataSet ReadData(string path)
{
DataSet ds = null;
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
try {
// ファイルパスからExcelを読み込む
using(var stream = File.Open(path, FileMode.Open, FileAccess.Read)) {
using(var reader = ExcelReaderFactory.CreateReader(stream)) {
ds = reader.AsDataSet();
}
}
}
catch(Exception ex) {
Console.Error.WriteLine(ex.Message);
}
return ds;
}
}
출력 결과
Start Excel Read
シート名 Sheet1
1 https://qiita.com/ title Qiitaだよ
2 https://qiita.com/ h1 はじめに
3 https://qiita.com/ h1 僕はトムではありません
4 https://qiita.com/ title はは
End Excel Read
이런 느낌의 출력 결과가 됩니다.
Excel을 테스트 케이스처럼 만들었고 Selenium을 사용하여 테스트를 테스트했습니다.
원한다면 참고해주세요 ^^
Reference
이 문제에 관하여(업무에서 사용한 C#의 편리한 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nariakiraHara/items/f1b4d091ed447a283d8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)