저는 자동화 작업을하고 최근에 webdriver를 연구하는 테스터입니다. 예를 들어 pageObjects와 Nunit을 사용하여 테스트를 실행하는 방법을 알게되었습니다. 내 문제는 미리 정의 된 순서대로 테스트를 실행하고 싶지 않다는 것입니다. 현재 GUI 자동화 솔루션은 ModelBasedTesting 도구 GraphWalker를 사용하여 실행시 테스트 시퀀스를 생성하므로이 방법을 계속 사용하고자합니다.webdriver로 실행할 테스트를 동적으로 선택하십시오.
간단히 말해서 그래프는 동작 및 확인 단계와 "그래프를 걷는"방법을 결정하는 논리를 포함합니다. 각 단계는 webdriver에서 실행될 메소드를 나타냅니다.
물론 많은 메서드를 만들고 하나씩 호출 할 수 있지만 Nunit 또는 PageObjects 구조와 같은 테스트 프레임 워크를 제대로 지원하지 못합니다. 내가 (생각) 무엇
내가 좋아하는 것입니다 :
[TestFixture]
public abstract class LoginTest : TestFixtureBase
{
[Test]
public void e_test1()
{
loginPage = PageBase.GetInstance<Login>(driver, "Title");
accountHome = loginPage.MainLogin(username, password);
Assert.IsTrue(accountHome.UserLoggedIn(),"fail");
}
[Test]
public void v_test1()
{
loginPage = accountHome.LogOut();
Assert.IsTrue(loginPage.UserLoggedOut(), "Fail");
}
.
.
.
[Test]
public void e_testN()
{
//Do something
}
그리고 내가 그래프를 실행하면 그때는 나에게 첫 번째 단계와 마법의 코드로 "e_test2을"제공은 e_test2를 실행합니다(). 다음 단계는 "v_test1"이므로 테스트가 실행됩니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?
업데이트 : 필자는 TestCaseSource 특성을 시도하고 작동 시켰습니다. 그러나 테스트 이전에 그래프를 실행하고 전체 시퀀스를 반환 할 때만 나타납니다. 나는 "온라인"에서 한 걸음 씩 나아갈 길을 찾고있다.
[Test, TestCaseSource("RunModel")]
public void LoginAndOut(string method)
{
object obj = this.GetType().InvokeMember(method, BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public, null, this, null);
}
public string[] RunModel()
{
List<string> methods = new List<string>();
while (Model.graphWalker.HasNextStep())
{
methods.Add(Model.graphWalker.GetNextStep().ToString());
}
return methods.ToArray();
}
그러나 나는 같은 것을 달성하고 싶은 : 이 작동
while (Model.graphWalker.HasNextStep())
{ //Get next method from GraphWalker Soap-service.
nextMethodToRun = Model.graphWalker.GetNextStep().ToString());
//handle Method result, if ok continue.
}
여전히 NUnit이 "무료"로 testresult 데이터를 가져 오기 위해 테스트를 실행하고 싶습니다. 내 console-app에서 (GraphWalker를 통해) 테스트를 실행하게하면 내 자신의보고 도구를 만들어야하고 NUnit의 다른 멋진 기능을 사용할 수 없습니다. – Johan