셀레늄 그리드를 사용하여 셀프 2에 대해 RemoteWebDriver
에 대해 많은 기사를 읽었습니다. 지금은 [Test]
속성을 사용하여 Test()
에 내 테스트가 생성됩니다.데이터 구동 테스트 케이스를 사용하는 MBUnit/Gallio의 병렬 테스트
정보를 채우는 데 사용한 TestCriteria
클래스가 있고이 데이터를 테스트에 입력하는 방법을 '제어하는'방법으로 Selenium WebDriver '페이지 개체 디자인 패턴'을 사용합니다.
는 그래서, 예를 들어, 간단한 기준이 객체가 있습니다
public class Credentials
{
public string Username { get; set; }
public string Password { get; set; }
}
는 그 다음 LoginPage 객체에서이 정보를 사용합니다.
public class LoginPage
{
[FindsByAnnotation]
public IWebElement UsernameField { get; set; }
[FindsByAnnotation]
public IWebelement PasswordField { get; set; }
[FindsByAnnotation]
public IWebelement SubmitButton { get; set; }
public HomePage Login(Credentials cred)
{
UsernameField.SendKeys(cred.user);
// code for login and return new HomePage object
}
}
이제 구조의 종류와 내가 테스트 데이터를 일단 내 시험에서 좋은 방법 체인을 만들 수 있어요, 내 자격 증명과 같은 일들이, 객체 등 다른 페이지에 기입해야 할 데이터 .
이 잘하고 좋은
[TestFixture]
public class TestFixture
{
private IWebDriver driver;
private TestCaseData data; // Which contains a Credentials object etc etc
[SetUp]
public void SetUp()
{
data = new TestCaseData()
{
Credentials = new Credentials()
{
Username = "username",
Password = "password"
}
// Other test case data objects can be populated here
};
driver = new FireFoxDriver();
}
[Test]
public void Test()
{
new LoginPage().Login(data.Credentials)
.NavigateToSearchPage()
.EnterSearchCriteria(data.SearchCritiera)
// etc
}
},하지만 ... 난 XML로 직렬화 복원 할 수있는 일련 TestData 사용 객체에서이 테스트 데이터를로드하고 싶었다면 무엇을.
나는 또한 IWebDriver driver = new FireFoxDriver();
을 사용하는 것에 비해 여전히 flakey 인 RemoteWebDriver
을 사용하고 싶습니다. 그러나이 문제를 무시하면서, 나는 한 번 이상 TESTCASE를 실행하고 싶습니다. 시각. 어느 것이 병렬 테스트의 문제로 다가 오나요?
나는 MBUnit이 Gallio의 일부인 이것을 처리 할 수 있음을 알고 있으며, Nunit의 확장 인 PUnit을 살펴 봤지만 아직 갈 길이 멀다. 그래서 저는 MbUnit을 고수하기로했습니다.
이렇게하면 [Parallelizable]
속성으로 TestFixtures를 실행할 수 있습니다. 그래서 프로젝트를 컴파일하고 프로젝트 DLL을 Gallio TestRunner GUI에로드하면 동시에 4 개의 테스트 케이스를 실행할 수 있으며, 동시에 4 개의 테스트를 동시에 실행하면서 4 개의 브라우저를 실행하면서 동시에 사이트에 스트레스를 가할 수 있습니다 4 가지 테스트가 모두 실행됩니다. (셀레늄 그리드를 사용하는 셀레늄 RemoteWebDriver를 사용하여 여러 대의 브라우저에서 수백 대의 브라우저를 실행하는 것이 분명합니다. [Parallelizable]
속성은 테스트 픽스처의 맨 위에 추가되며, 예를 들어 C : \ TestCase 디렉토리의 1 - 10 .xml 파일을로드 한 후에 모두 동시에 실행하게합니다.
내 아이디어는 이것들은 모두로드 된 다음 Selenium Grid가 메인 Selenium 그리드 허브에 연결된 1 - 5 개의 Selenium 노드로 브라우저 세션을 처리하도록하십시오.
[SetUp]
[TearDown]
[Test]
을 포함하고 무엇이로드되는지에 따라 테스트 속성에 특정 테스트 조건을 설정할 수있는 기능을 포함하는 Test Fixture
을 생성 할 수있는 프레임 워크를 찾을 수 없을 때 Selenium Grid를 사용하는 데 어려움을 겪고 있습니다. TestCase .xml 파일에서.
예를 들어 TestCase .xml 파일에 실패한 요소가있는 경우 어떻게이 .xml 파일을로드하고 내 TestFixture의 [Test]에 속성을 설정하거나 TestCase를 매핑 할 수 있습니까?xml 런타임시 [Test(Description = "")]
특성에 대한 테스트 설명입니다.
저는 이미 셀레늄 webdriver의 기능, 페이지 객체 디자인 패턴, 스크린 샷을위한 셀렌 EventFiringWebDriver
기능을 알고 있습니다.
여러 XML 직렬화 된 TestCaseData로로드하는 기능을 어떻게 활용하고,로드 된 후에 새로운 TestFixture 객체를 생성 할 수 있습니까?
이상적으로 특정 URL은 TestCase.xml 파일에 포함 된 내용에 따라 달라 지므로 IWebDriver
을 설정하려면 각 TestFixture의 [SetUp]을 설정하고 싶습니다. 예를 들어이 테스트는 UAT 환경에서 실행하는 것입니다. Test 환경, 사전 제작 환경, 테스트를 실행하기 전에이를 설정해야합니다.
누구나 Selenium Grid/Selenium WebDriver에서 이러한 테스트 설비를 병렬로 실행하여 여러 브라우저를 실행하는 Selenium Grid 기능을 활용할 수있는 이러한 기본 개념을 사용하는 기본 예제는 없습니다.
그래서 내가 의사 코드로 찾고있는 것이 있습니다.
public class Main()
{
// Load Testfixtures
List<TestCase> testCases = Deserialise("\\Some\\FolderLocation");
foreach(test in testCases)
{
// create NEW testFixture, not [Test]
// ability to attach parallel TestFixture
}
}
[Testfixture]
[Parallelizable]
public class TestFixture
{
public TestCase testCase { get; set; }
public IWebDriver driver { get; set; }
[SetUp]
public void SetUp()
{
if(testCase.Environment == "UAT")
{
driver = new FireFoxDrive()
driver.NavigateTo("http://localhost/uat/Login");
}
// What if the testCase.ShouldPass is false?
// How can i generate my [Test] with ExpectedException?
}
[Test]
public void Test()
{
// code here with page object method chaining passing in testCase data objects
}
}
어쩌면 나는이 디자인에 대해 잘못된 길을 가고 있습니다. 이러한 문제를 병렬 처리하는 가장 좋은 방법은 무엇입니까?
Nunit TestCaseSource를 사용하여 궁극적으로이 파일을 발견했습니다. 감사합니다 :) +1 –