#はじめに
自分のモチベーションアップも含め、Qiitaに何か投稿をしようと考えて半年が経ってしまいました。
今回のアドベントカレンダーを機に投稿していこうと思った次第です。
あまりにも知られているライブラリであるため、お役に立てなかったらすいません。
たくさん紹介したいものもありますが、今回私が紹介したいものは下記となります。
- Selenium
- ExcelDataReader
※SEO対策のテストや、SIer時代のテスト項目消化などに使用していました。
Selenium
昔からあるクライアントチェックライブラリの一つですが、改めて紹介をさせていただきます。
dotnetコマンドからプロジェクトを作っていきましょう。
※dotnet SDKに関してはDownload .NET (Linux, macOS, and Windows)からダウンロードをお願いします。
dotnet new nunit -o SeleniumUITest
実行すると下記のような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
ここから簡単にコードを追記していきます。
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を格納します。
こんな感じになりました。
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を使用してテストを実施していました。
よかったら参考にしてみてください^^