2012-08-27 7 views
0

Windows에서 파이썬 스크립트로부터 쉘 테스트 스크립트를 실행 중입니다. 셸 스크립트는 다양한 모듈의 기능을 테스트하고 있습니다.파이썬에서 bash 스크립트와 통신하기

내가 직면 한 문제는 일부 스크립트가 중단 될 수 있다는 것입니다. 이를 위해 각 스크립트에 대해 시간 초과를 추가했습니다. 이 시간 초과에는 기본값이 있습니다. 하지만이 타임 아웃 값은 bash 스크립트 (bash 함수 (SetMaxTime))에서 변경할 수 있습니다. SetMaxTime을 수정할 수 있습니다.

기본값을 사용하는 경우 파이썬에서 해당 기간 동안 기다리고 bash 스크립트가 완료되지 않은 경우 해당 테스트가 시간 초과로 인해 실패한 것으로 간주합니다.

문제는 timeout의 기본값이 bash에서 변경되었을 때입니다. 파이썬에서 bash 스크립트 (mingw로 실행)와 통신하는 방법이 있습니까?

참고 : 스크립트는 Windows에서 실행됩니다.

+2

귀하의 질문에 답변하기가 너무 어렵습니다. 코드를 보여 주며, 잘못되었다고 생각하는 것에 대해 설명하고, 수정 된 내용으로 답변 해 드리겠습니다. – ghoti

+0

일반적인 대답을했습니다. –

답변

1

물론 파일이나 파일 쌍 (하나는 파이썬이 쓰고 다른 하나는 읽는 bash 스크립트, 다른 하나는 비자)에 대해 읽고 쓰기가 가능합니다.

+0

나는 그것을하는 더 좋은 방법이 있다고 생각했습니다. 그러나 시간이 중요한 작업이 아니기 때문에 파일을 사용할 수 있습니다. – INS

+0

나는 동의한다, 이것은 끔찍한 방법이지만, 빠르고 더러운 해결책으로는 효과가있다. –

1

스크립트가 시간 종료 값을 설정할 때 stdout에 대한 정보를 출력하도록하십시오. 예. 때 시간 제한 변경, 스크립트는 수 출력 : 호출 된 스크립트의 출력이 마커를 찾아 그에 따라 시험 제한 시간을 조정 스크립트를 호출 파이썬 코드에서

TIMEOUT_SECONDS=2 

.

이렇게하려면 subprocess.Popen 메서드를 사용하여 스크립트를 호출하고 stdout에 PIPE 옵션을 지정하고 싶을 것입니다. 테스트가 실행되는 동안 서브 프로세스 stdout 속성을 읽고 스크립트에서 TIMEOUT_SECONDS=xxx 출력을 찾고 제한 시간을 조정해야합니다.

관련 문제