はじめに
自分のモチベーションアップも含め、Qiitaに何か投稿をしようと考えて半年が経ってしまいました。
今回のアドベントカレンダーを機に投稿していこうと思った次第です。
あまりにも知られているライブラリであるため、お役に立てなかったらすいません。
たくさん紹介したいものもありますが、今回私が紹介したいものは下記となります。
- Selenium
- ExcelDataReader
※SEO対策のテストや、SIer時代のテスト項目消化などに使用していました。
Selenium
昔からあるクライアントチェックライブラリの一つですが、改めて紹介をさせていただきます。
dotnetコマンドからプロジェクトを作っていきましょう。
※dotnet SDKに関してはDownload .NET (Linux, macOS, and Windows)からダウンロードをお願いします。
dotnet new nunit -o SeleniumUITest
実行すると下記のようなcsファイルができるかと思います。
publicclassTests{[SetUp]publicvoidSetup(){}[Test]publicvoidTest1(){Assert.Pass();}}次に、プロジェクトにSeleniumを追加していきましょう。
dotnet add package Selenium.WebDriver
dotnet add package Selenium.WebDriver.ChromeDriver
ここから簡単にコードを追記していきます。
publicclassTests{privateOpenQA.Selenium.IWebDriverwebDriver=null;[SetUp]publicvoidSetup(){varoptions=newChromeOptions();// 2つのオプションを追加// 1つ目ブラウザを立ち上げない// 2つ目プライベートモードで開くoptions.AddArguments("--headless","--incognito");webDriver=newOpenQA.Selenium.Chrome.ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),options);}[Category("Assert True Test")][TestCase("https://qiita.com/nariakiraHara/items/f1b4d091ed447a283d8d","title","業務で使用したC#の便利ライブラリ - Qiita")]publicvoidTest1(stringurl,stringtagName,stringcontent){AssertTrueTest(url,tagName,content);}privatevoidAssertTrueTest(stringurl,stringtagName,stringcontent){webDriver.Navigate().GoToUrl(url);vartitleInfo=webDriver.Title;Assert.AreEqual(content,titleInfo,"タイトルを間違えています。");}[OneTimeTearDown]publicvoidDispose(){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を格納します。
こんな感じになりました。
classProgram{// 先程の画像のExcel Data.xlsxを読み込むprivatestaticreadonlystringDATA_PATH=@"resources/Data.xlsx";staticvoidMain(string[]args){Console.WriteLine("Start Excel Read");varapp=newProgram();app.Run();Console.WriteLine("End Excel Read");}publicvoidRun(){vards=ReadData(DATA_PATH);foreach(DataTabletblinds.Tables){Console.WriteLine($"シート名 {tbl.TableName}");// 1行ずつ見ていくfor(varj=0;j<tbl.Rows.Count;j++){if(j==0)continue;// 1カラムずつ見ていきますfor(vari=0;i<tbl.Columns.Count;i++){Console.Write($"{tbl.Rows[j][i]} ");}Console.WriteLine("");}}}privateDataSetReadData(stringpath){DataSetds=null;System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);try{// ファイルパスからExcelを読み込むusing(varstream=File.Open(path,FileMode.Open,FileAccess.Read)){using(varreader=ExcelReaderFactory.CreateReader(stream)){ds=reader.AsDataSet();}}}catch(Exceptionex){Console.Error.WriteLine(ex.Message);}returnds;}}出力結果
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を使用してテストを実施していました。
よかったら参考にしてみてください^^