#python #opencv
Вопрос:
Я пытаюсь создать рекордер всякий раз, когда инициализируются тестовые случаи. Например, при выполнении сценария тестирования регистратор откроется и запишет поведение графического интерфейса. Однако рекордер застрял в бесконечном цикле, и я хочу, чтобы он был закрыт после тестирования. Как я мог бы решить эту проблему? Спасибо.
Вот Recorder
класс, который я построил.
[ record_gif.py ]
RESOLUTION = (1200, 950) FOURCC = cv2.VideoWriter_fourcc(*'mp4v') class Recorder: def __init__(self, video_name): """ The class uses OpenCV to build an automated recorder to record the testing cases. """ # output would be name of the video, video type, FPS, (resolution) # note the resolution must be the same as the image size self.video_name = video_name self.out = cv2.VideoWriter(self.video_name, FOURCC, 20, RESOLUTION) self.recording = False def record(self): self.recording = True while self.recording: # bbox = (start_x, start_y, (end_x - start_x, end_y - start_y)) img = ImageGrab.grab(bbox=(471, 108, (1920-471), (1000-107))) img_np = np.array(img) img_np = cv2.resize(img_np, RESOLUTION) # covert the img_np array's color scheme frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB) # show on the Screen window cv2.imshow("Screen", img_np) # the video would write the frame self.out.write(frame) # use ESC, or set recording to False to end the recording if cv2.waitKey(1) amp; 0xFF == 27: break elif self.recording == False: break self.out.release() cv2.destroyAllWindows()
А вот пример тестирования игрушек:
[ test_us01.py ]
import recorder from record_gif class TestUserStory1(unittest.TestCase): @classmethod def setUpClass(self): recorder = Recorder("Test") recorder.record() @classmethod def tearDownClass(self): recorder.recording = False def test_recorder(self): sleep(10)
Когда я выполняю сценарий py -m unittest test_us01.py
, я хочу активировать диктофон, и после тестирования диктофон должен быть закрыт.