웹 응용 프로그램을 테스트하기 위해 Selenium을 사용하여 NUnit 테스트 케이스를 작성했습니다. 다른 환경 (예 : QA, 준비, & 생산)에 대해 동일한 테스트 케이스를 실행하고 싶습니다. 어떻게 달성 할 수있는 가장 쉬운 방법입니까?Selenium을 사용하여 NUnit 테스트 케이스를 실행하여 다른 환경에서 실행하려면 어떻게해야합니까?
답변
NUnit은 매개 변수화 된 테스트 픽스처와 매개 변수화 된 테스트를 지원합니다. 따라서 첫 번째로 다른 환경에 대해 특정 테스트를 실행하려고합니까 아니면 전체 테스트 픽스쳐가 두 환경 모두에 대해 다시 실행될 것입니까?
이 질문에 대한 답은 매개 변수 (환경)를 전달할 위치를 결정하므로 부탁드립니다. 전체 테스트 픽스쳐를 재실행하려는 경우, 테스트 픽스처 레벨에서 환경을 통과시켜야합니다. 즉 매개 변수화 된 테스트 픽스처를 작성해야합니다. 이러한 환경에 대해 특정 테스트 만 실행하려면 각 테스트 케이스에 테스트를 전달해야합니다. 예를 들어, 내가 같은 일을 어떻게 수행했는지 아래에 있습니다.
먼저 테스트에 '첨부 할 수있는'환경을 정의하는 방법을 만듭니다. ,
public enum Environment
{
QA,
Production,
Hotfix,
Development
}
public class Settings
{
public static string QAUrl { get { return "some url"; } }
public static string ProductionUrl { get { return "some url"; } }
public static string HotfixUrl { get { return "some url"; } }
public static string DevUrl { get { return "some url"; } }
}
위 "일부 URL이"구성 파일이나 하드에서 읽을 것이다 : 나는 아마의 app.config에이를 밀어 제안과 함께 갈 수있는 '설정'클래스와 열거이있을 것이다 그러나 너는 부탁한다.
환경에 대한 개념이 있고 URL이지만, 어떤 방식 으로든 서로 연결되어 있거나 관련이 없습니다. 이상적으로는 열거 형의 'QA'값을 부여하려는 경우 URL이 정렬됩니다.
다음으로 모든 테스트 픽스쳐가 상속 할 수있는 기본 테스트 픽스처를 생성하여 현재 환경을 유지합니다. 당신은 아마 어떤 enum
값의에 어떤 URL의지도를 해결하도록 반사를 사용할 수
public class BaseTestFixture
{
private Dictionary<Environment, string> PossibleEnvironments
{
get
{
return new Dictionary<Environment, string>()
{
{ Environment.QA, Settings.QAUrl },
{ Environment.Production, Settings.ProductionUrl },
{ Environment.Hotfix, Settings.HotfixUrl },
{ Environment.Development, Settings.DevelopmentUrl },
}
}
}
private Environment CurrentEnvironment { get; set; }
public BaseTestFixture(Environment environment)
{
CurrentEnvironment = environment;
}
}
: 우리는 또한 URL의에 이제 환경 값을 관련시키는 Dictionary
을 만들 수 있습니다.
우리가 실행할 수있는 환경이 멋지다. 사이트 관리자로 로그인하기위한 샘플 테스트 :
public class LoginToSite
{
[Test]
public void CanAdministratorSeeAdministratorMenu()
{
// go to the site
driver.Navigate().GoToUrl("production site");
// login as administrator
}
}
특정 URL로 이동하려면 어떻게해야합니까?
그래서 우리는 지금이 ... 이public class BaseTestFixture
{
private Dictionary<Environment, string> PossibleEnvironments
{
get
{
return new Dictionary<Environment, string>()
{
{ Environment.QA, Settings.QAUrl },
{ Environment.Production, Settings.ProductionUrl },
{ Environment.Hotfix, Settings.HotfixUrl },
{ Environment.Development, Settings.DevelopmentUrl },
}
}
}
private Environment CurrentEnvironment { get; set; }
protected string CurrentEnvironmentURL
{
get
{
string url;
if (PossibleEnviroments.TryGetValue(CurrentEnviroment, out url))
{
return url;
}
throw new InvalidOperationException(string.Format("The current environment ({0}) is not valid or does not have a mapped URL!", CurrentEnviroment));
}
}
public BaseTestFixture(Environment environment)
{
CurrentEnvironment = environment;
}
public BaseTestFixture()
{
}
}
우리의 기본 클래스는 지금 우리가 어떤 환경, 어떤 페이지로 이동하기에 따라, 우리가 말할 수있는 ...의 우리의 기본 클래스 조금 수정하자 테스트, 우리의 기지에서 상속 :
public class LoginToSite : BaseTestFixture
{
[Test]
public void CanAdministratorSeeAdministratorMenu()
{
// go to the site
driver.Navigate().GoToUrl(CurrentEnvironmentURL);
// login as administrator
}
}
그러나 위의 컴파일되지 않습니다 ... 왜? 우리는 실제로 아직 환경을 제공하지 않고 있으므로 우리는 하나를 전달해야합니다 ...위대한
[TestFixture(Environment.QA)]
public class LoginToSite : BaseTestFixture
{
[Test]
public void CanAdministratorSeeAdministratorMenu()
{
// go to the site
driver.Navigate().GoToUrl(CurrentEnvironmentURL);
// login as administrator
}
}
는, 지금 전달 환경을 가지고, 등 URL의 검사는 모든 그러나이 여전히가 컴파일되지 않습니다 ... 지금 당신을 위해 백그라운드에서 수행됩니다. 우리가 상속을 사용하고 있기 때문에, 우리에게 전달할 생성자가 있어야합니다 :
public LoginToSite(Environment currentEnvironment)
{
CurrentEnvironment = currentEnvironment;
}
Et voilà. 특정 테스트 케이스에 관해서는
이 이전부터 우리의 테스트 케이스를 가지고, 좀 더 쉽게 :
public class LoginToSite
{
[TestCase(Environment.QA)]
public void CanAdministratorSeeAdministratorMenu(Environment environment)
{
// go to the site
driver.Navigate().GoToUrl("production site");
// login as administrator
}
}
는 것을
특정 테스트 케이스로 환경을 전달한다. ..
public class EnvironmentHelper
{
private static Dictionary<Environment, string> PossibleEnvironments
{
get
{
return new Dictionary<Environment, string>()
{
{ Environment.QA, Settings.QAUrl },
{ Environment.Production, Settings.ProductionUrl },
{ Environment.Hotfix, Settings.HotfixUrl },
{ Environment.Development, Settings.DevelopmentUrl },
}
}
}
public static string GetURL(Environment environment)
{
string url;
if (PossibleEnviroments.TryGetValue(environment, out url))
{
return url;
}
throw new InvalidOperationException(string.Format("The current environment ({0}) is not valid or does not have a mapped URL!", environment));
}
}
답변 해 주셔서 감사합니다. 그것은 나를 많이 도왔다. 좀 더 구체적이어야 했어. QA 직원이 회귀 도구를 실행할 수있는 방법을 찾고 싶었습니다. 그래서 나에게 가장 좋은 방법은 환경별로 [configuration files] (http://www.nunit.org/index.php?p=configFiles&r=2.2.10)를 사용하는 것이 었습니다. 그래서 "QA"와 "Production"이라는 공유 폴더에 여러 개의 폴더를 만든 다음 내 test.dll과 test.dll.config를 복사했습니다. 그래서 그들은 상자에 NUnit을 설치하고 회귀 테스트를 수행 할 환경에 따라 각각의 폴더에 기반한 dll을 열 수 있습니다. – Duk
가장 좋은 방법은 모든 기능에 대해 하드 코딩 된 링크 대신 변수를 사용하는 것입니다. 환경을 변경해야 할 때 변경할 수 있습니다. 더 쉬운 방법은 메모장/엑셀 파일에서 링크를 읽는 것입니다.
- 1. Selenium을 사용하여 연속적으로 단일 테스트 케이스를 실행하려면 어떻게해야합니까?
- 2. 명령 프롬프트에서 NUnit 테스트 케이스를 실행하는 방법
- 3. SBT로 JUnit 4.11 테스트 케이스를 실행하려면 어떻게해야합니까?
- 4. xUnit 테스트를 사용하여 NUnit 테스트 케이스를 실행하십시오.
- 5. EPIC을 사용하여 Eclipse에서 Perl 테스트 케이스를 실행하려면 어떻게해야합니까?
- 6. 하나의 변수로 NUnit 테스트 케이스를 실행
- 7. C#을 나는 NUNIT 테스트 케이스를 만드는
- 8. 로컬 실행중인 Selenium 서버에 대해 개별 테스트 케이스를 실행하려면 어떻게해야합니까?
- 9. 다시 실행 시나리오에서도 항상 테스트 케이스를 실행하려면 어떻게해야합니까?
- 10. Android 개미 빌드 스크립트를 통해 단일 테스트 케이스를 실행하려면 어떻게해야합니까?
- 11. NUnit 테스트 케이스 목록을 대기열에 넣는 방법
- 12. 64 비트 환경에서 32 비트 프로세스로 지정된 NUnit 테스트 실행
- 13. 젠킨스에서 셀렌 테스트 케이스를 실행하는 방법은 무엇입니까?
- 14. 여러 NUnit 테스트 어셈블리. 각각 다른 구성이 필요합니다. 한 번에 NUnit을 실행하려면 어떻게해야합니까?
- 15. rake 작업을 dev 이외의 환경에서 실행하려면 어떻게해야합니까?
- 16. Rails 환경에서 Ruby 파일을 실행하려면 어떻게해야합니까?
- 17. 공유 호스팅 환경에서 RavenDB를 실행하려면 어떻게해야합니까?
- 18. Spree 앱을 프로덕션 환경에서 강제로 실행하려면 어떻게해야합니까?
- 19. 테스트 명령을 제대로 실행하려면 어떻게해야합니까?
- 20. 단일 테스트 케이스를 실행하려면 다중 스레딩 환경이 필요합니다. 즉 여러 스레드에서 단일 테스트 케이스를 실행해야합니다.
- 21. 다른 스레드에서 NUnit 및 테스트
- 22. NUnit - 테스트 케이스를 3 번 반복하십시오. 실패한 경우
- 23. 다른 객체로 동일한 NUnit 테스트 실행하기
- 24. 기술을 사용하여 테스트 케이스를 준비합니다.
- 25. 선택적 NUnit 테스트 무시
- 26. NUnit 테스트 객체간에 영구 객체를 사용하려면 어떻게해야합니까?
- 27. NUNIT 테스트
- 28. NUNIT 테스트
- 29. NUnit과 내가 보이는 테스트 케이스를
- 30. NUnit addins를 사용하여 TeamCity 6.5.X에서 NUnit 테스트 실행
설정 파일을 왜 당신의 환경은 본질적 것? (내가 전에했던 것처럼 비슷한 방법으로) 그런 다음 검사 환경을 어떻게, 어떤 종류의 새로운
Settings
클래스를 필요 UAT와 프로덕션간에 다른 점이 있습니까? –