Как лучше всего проверить мой эксперимент по созданию психотипа? Могу ли я автоматизировать ответы

Я хочу автоматизировать тестирование моего эксперимента PsychoPy Builder, чтобы охватить сочетание правильных и неправильных ответов.

Я не могу найти ничего в справке по этой области.

У кого-нибудь есть предложения?


person jacanterbury    schedule 09.02.2015    source источник
comment
Вы можете использовать unittest? или что-то вроде Sikuli, которое напрямую взаимодействует с вашим графическим интерфейсом.   -  person meatspace    schedule 09.02.2015
comment
За последние несколько месяцев в списке разработчиков PsychoPy обсуждались такие пакеты Python, как pyautogui, которые могут имитировать ответы пользовательского интерфейса для автоматического тестирования. например groups.google.com/d/msg/psychopy-dev/ КаSPCyy0ZAI/j-CnUSMK0NgJ   -  person Michael MacAskill    schedule 09.02.2015
comment
спасибо, мясное пространство, это возможно, но я искал более простой способ для новичков. Я придумал кое-что .. см. Ниже   -  person jacanterbury    schedule 10.02.2015
comment
Михаил, спасибо, посмотрю   -  person jacanterbury    schedule 10.02.2015


Ответы (2)



Для справки, немного покопавшись и поэкспериментировав, я пришел к следующему варианту, который подходил мне по всем параметрам. 1/добавьте блок кода для импорта следующих библиотек:

import win32api 
import win32con 
import time

Затем определите коды клавиш для ввода, который вы ищете, например:

VK_CODE = {
'enter':0x0D,
'esc':0x1B,
'spacebar':0x20,
'pageup':0x21,
'pagedown':0x22,
'end':0x23,
'home':0x24,
'left':0x25,
'up':0x26,
'right':0x27,
'down':0x28,
'0':0x30,
'1':0x31,
'2':0x32,
'3':0x33,
'4':0x34,
'5':0x35,
'6':0x36,
'7':0x37,
'8':0x38,
'9':0x39,
'a':0x41,
'b':0x42,
'c':0x43,
'd':0x44,
'e':0x45,
'f':0x46,
'g':0x47,
'h':0x48,
'i':0x49,
'j':0x4A,
'k':0x4B,
'l':0x4C,
'm':0x4D,
'n':0x4E,
'o':0x4F,
'p':0x50,
'q':0x51,
'r':0x52,
's':0x53,
't':0x54,
'u':0x55,
'v':0x56,
'w':0x57,
'x':0x58,
'y':0x59,
'z':0x5A,
'numpad_0':0x60,
'numpad_1':0x61,
'numpad_2':0x62,
'numpad_3':0x63,
'numpad_4':0x64,
'numpad_5':0x65,
'numpad_6':0x66,
'numpad_7':0x67,
'numpad_8':0x68,
'numpad_9':0x69,
'multiply':0x6A,
'add':0x6B,
'separator':0x6C,
'subtract':0x6D,
'decimal':0x6E,
'divide':0x6F,
'f1':0x70,
'f2':0x71,
'f3':0x72,
'f4':0x73,
'f5':0x74,
'f6':0x75,
'f7':0x76,
'f8':0x77,
'f9':0x78,
'f10':0x79,
'f11':0x7A,
'f12':0x7B
}

затем в блоке кода где-то в пробном цикле на вкладке «Начать процедуру» добавьте:

frame_counter = 0

и на вкладке "каждый кадр" добавьте это

frame_counter +=1

# usually at 60 frames per second , so below we wait for ~1 second 
# 'autoResp' below is the column name in your excel results file
# you can change this to whatever you want
#
# *IMPORTANT* Below, 
# -replace 'thisTrial' with the name you gave to your trial loop
# -'autoResp' is the column namein the csv file with the desired AUTOMATIC 
#       keyboard responses in

if frame_counter > 60:
    this_resp = VK_CODE[thisTrial['autoResp']]
    win32api.keybd_event( this_resp, 0, 0, 0)
    time.sleep(.05) # wait a while before doing the key_up ...
    win32api.keybd_event( this_resp,0 ,win32con.KEYEVENTF_KEYUP ,0) 
    frame_counter=0

См. комментарии к коду во фрагменте выше.

Затем это извлекает «автоматические» нажатия клавиш из вашего CSV-файла (в данном случае столбец с именем «autoResp». Nb вы можете использовать это для проверки правильных и неправильных сценариев).

person jacanterbury    schedule 10.02.2015