2

원격 서버에 대해 실행되는 rspec 및 capybara를 사용하여 일련의 셀렌 테스트를 생성 한 프로젝트가 있습니다. 즉,이 테스트는 애플리케이션과 동일한 Rails 인스턴스/환경에서 실행되지 않으므로 해당 애플리케이션 레이크 작업에 대한 액세스 권한이 없습니다.셀렌 테스트를 실행하기 전에 원격 DB 청소 방법에 대한 아이디어

우리가 알아 내려고하는 것은 매번 실행하기 전에 데이터베이스를 정리/복원하는 좋은 방법입니다. Jenkins 빌드 작업을 통해 응용 프로그램을 배포 한 다음 성공하면 셀렌 테스트를 시작합니다. 우리는 Selenium2를 사용하고 테스트는 SeleniumServer (이전의 Selenium Grid)를 통해 실행됩니다. DB를 복원하기 위해 응용 프로그램을 배포 할 때 Cap 작업을 시작하는 기능이 있습니다.

우리가해야 할 마이그레이션 수를 최소화하면서 (가장 최근 마이그레이션으로 만 마이그레이션하는 것이 좋음) 복원을 수행하고 필요한 데이터로 데이터베이스를 미리 시드하는 방법에 대한 질문이 있습니다.

어떤 흥미로운 일들이 우리의 설치에 대한주의 : 우리는 그것의하지 연주회 씨앗이되는 정보의 공정한 조금을 가지고 있지만, 당신은 씨앗 파일에 입력 할 것보다 더 우리가 모두 완벽하게 파티션 된 데이터베이스가 공개 및 비공개 스키마 우리는 멀티 테넌트 (multi-tenant) 응용 프로그램을 가지고 있으며 개인 스키마를 사용하여 데이터 액세스를 격리합니다.

그래서 다른 사람들이이 문제를 해결하는 데 사용한 몇 가지 방법은 무엇입니까?

대부분의 사람들은이 문제에 대해 데이터베이스 청소기를 사용한다고 생각하지만 처음에는 셀레늄 테스트가 Rails 환경 외부에서 실행되므로 데이터베이스 클리너가 작동하지 않습니다.

+0

을 이동하고자 할 때

그런 다음, 당신은 오이 환경에서 데이터베이스에 원격 연결을 열 수 있습니다 예를 들어 데이터베이스 청소기로 db를 청소하거나 계획 SQL 쿼리를 실행하는 것과 같은 원하는 작업을 수행 할 수 있습니다. – luacassus

답변

0

젠킨스를 사용하는 경우 데이터베이스 재설정/새로 고침에 대한 책임이있는 다른 젠킨스 작업을 작성할 수 있습니다. 여기에는 데이터베이스 정리를위한 스크립트가 포함될 수 있습니다. 그런 다음 현재 Jenkins 테스트 작업을 다운 스트림 프로젝트로 설정하십시오.이 작업은 정리 작업이 성공적으로 수행 될 때 시작됩니다. 당신은, 전체 테스트 킥오프 바로 정리 작업을 실행하고이 테스트 서버 인 경우 샌드위치 :

관련 문제