업무에서 사용한 C#의 편리한 라이브러리

소개



자신의 동기부여를 포함해 Qiita에 뭔가 투고를 하려고 생각해 반년이 지나 버렸습니다.
이번 어드벤트 캘린더를 계기에 투고해 나가려고 생각한 대로입니다.

너무 알려진 라이브러리이기 때문에 도움이되지 않으면 죄송합니다.
많이 소개하고 싶은 것도 있습니다만, 이번 제가 소개하고 싶은 것은 아래와 같습니다.
  • Selenium
  • ExcelDataReader

  • ※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을 사용하여 테스트를 테스트했습니다.

    원한다면 참고해주세요 ^^

    좋은 웹페이지 즐겨찾기