'=====================================================================
' TEST CASE NAME:
'
' GENERAL DESCRIPTION OF WHAT IS VERIFIED:
'
'
' SPECIFIC AREA ADDRESSED BY THIS TEST CASE:
'
'
' NAME OF APPLICATION UNDER TEST:
'
'=====================================================================
' TEST CASE PURPOSE:
'
'
' TEST CASE ABSTRACT OF TECHNIQUES USED TO TEST THE FEATURE:
'
'
' SCENARIOS: 1.
' 2.
' 3.
' 4.
' 5.
' 6.
' 7.
' 8.
' 9.
' 10.
'
'---------------------------------------------------------------------------
' OTHER FILES REQUIRED TO RUN TEST CASE:
'
'
'
'---------------------------------------------------------------------------
' REVISION HISTORY:
'
' [ 0] <DD-MM-YY> <NAME> : <CHANGES MADE>
' [ 1] - - <????> : Created test.
'---------------------------------------------------------------------------
' '$DEFINE and '$INCLUDE metacommands for test case
'-------------------------------------------------------------------
'$include 'KillProcess.inc'
' DIM statements, TYPE declarations, global variables,
' constants, and so on for test case
'-------------------------------------------------------------------
' *************************
' **** BEGIN TEST CASE ****
' *************************
'******* Test Case INITIALIZATION/SETUP *********
Dim Fname$
Dim hwnd&
Dim hwnd1&
Dim hwnd2&
Dim hwnd3&
Dim StrVal$
Dim ZagVal$
Dim CtrVal$
Dim Etl1$
Dim Etl2$
Dim i%
Dim z%
Dim numprobel%
Fname = "prog32.exe"
if Exists(Fname) then
Open "TestT.txt" for input as #1
Open "TestE.txt" for input as #2
Dim n as integer
Dim Tst as string
Dim Etl$
n = 0
Do While EOF(1) = NULL
n = n + 1
LINE INPUT #1, Tst$
LINE INPUT #2, Etl$
RUN Fname, NOWAIT
Sleep(1)
hwnd = WFndWnd("Моя программа")
if hwnd then
if WEditExists("@1") then
StrVal = EditText("@1")
hwnd1 = GETHANDLE(1)
WEditSetText("@1",Tst)
WClkWnd(hwnd, 100, 100)
WButtonClick("Счёт")
else
print "Не найден EditBox1"
endif
if WEditExists("@2") then
hwnd2 = GETHANDLE(2)
ZagVal = GetText(hwnd2)
ZagVal = EditText("@2")
else
print "Не найден EditBox2"
endif
if WEditExists("@3") then
hwnd3 = GETHANDLE(3)
CtrVal = GetText(hwnd3)
CtrVal = EditText("@3")
else
print "Не найден EditBox3"
endif
Etl1$ = LEFT$(Etl$, INSTR(1,Etl$," ")-1)
Etl2$ = RIGHT$(Etl$, LEN(Etl$)-INSTR(1, Etl$," "))
if ZagVal = Etl1 AND CtrVal = Etl2 THEN
MSGBOX("Тест №"+STR$(n)+" пройден")
else
MSGBOX("Тест №"+STR$(n)+" не пройден")
endif
sleep(1)
bKillProcess(Fname)
else
print "Окно тестирующей программы не найдено"
endif
LOOP
MSGBOX("Тестирование завершено.")
' Çàêðûòèå ôàéëà testT.txt
close #1
' Çàêðûòèå ôàéëà testE.txt
close #2
endif
'******* SCENARIO SECTION ***********************
'*** Scenario 1:
Scenario ("<name/description goes here>")
Scenario Cleanup 'and handling of scenario failure
End Scenario
'******* Test Case CLEANUP **********************
' *************************
' ***** END TEST CASE *****
' *************************
End
'*****************************************************************************
' LOCAL SCRIPT SUBS/FUNCTIONS
'*****************************************************************************
Ловить MessageBox в Visaul Test
1. Есть программа которая считает количество заглавных и строчных букв в стооке (написана на C++ WinApi в Microsoft Visual Studio 2008)
2. Есть два вайла (testT.txt - вводимые значения и testE.txt - значения ожидаемых результатов)
Я так понял что процесс тестирования надо автоматизировать с помощью языка Test Basic, который очень похож на Visual Basic.
Я тестировал на значениях
testT.txt
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111A
123
QqПп
0
1
(a+b) / (c-d) * (e-f)
testE.txt
1 0
0 0
2 2
0 0
0 0
0 6
Всё работает отлично
Код:
А как сделать что бы ловило окно с ообщение (MessageBox)
У меня есть в двух местах выскакивает сообщение, когда пользователь не ввёл строку и когда пользователь ввёл больше чем 256 символов.
Вот к примеру:
1. В файле testT.txt лежит пустая строка
2. В файле testE.txt лежит строка "Вы не ввели строку!"
3. В программе что я тестирую есть проверка на пустую строку с сообщением "Вы не ввели строку!"
Можно ли вообще поймать сообщения в Visual Test или как-то можно по другому сделать?
Мне нужно что бы строка "Вы не ввели строку!" находящаяся в MessageBox тестируемой программы с равнивалась со строкой "Вы не ввели строку!" которая находится в файле testE.txt
Помогите пожалуйста разобратся.
Код:
Dim message1$
Dim message2$
message1 = "Вы не ввели строку!"
message2 = "Вы ввели больше чем 256 символов!"
hwnd4 = WFndWnd("Сообщение 1")
if hwnd4 then
if message1 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox1"
endif
hwnd5 = WFndWnd("Сообщение 2")
if hwnd5 then
if message2 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox2"
endif
Dim message2$
message1 = "Вы не ввели строку!"
message2 = "Вы ввели больше чем 256 символов!"
hwnd4 = WFndWnd("Сообщение 1")
if hwnd4 then
if message1 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox1"
endif
hwnd5 = WFndWnd("Сообщение 2")
if hwnd5 then
if message2 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox2"
endif
Но у меня возник вопрос почему MessageBox1 не находится, MessageBox2 находится, хотя один раз и MessageBox1 нашлась.
Как поправить чтобы всё находилось?
Может надо фокус устанавливать на MessageBox1 и MessageBox2, но как это сделать?
Что же делать, может надо применить другую функцию поиска, но какую я не знаю?
Код:
WSetActWnd(hwnd)
перед
Код:
hwnd4 = WFndWnd("Сообщение 1")
Но возникла другая проблема
Код:
Dim message1$
Dim message2$
message1 = "Вы не ввели строку!"
message2 = "Вы ввели больше чем 256 символов!"
if LEN(StrVal) > 0 AND LEN(StrVal) < 257 then
Etl1$ = LEFT$(Etl$, INSTR(1,Etl$," ")-1)
Etl2$ = RIGHT$(Etl$, LEN(Etl$)-INSTR(1, Etl$," "))
if ZagVal = Etl1 AND CtrVal = Etl2 THEN
print "Тест пройден"
else
print "Тест не пройден"
endif
endif
WSetActWnd(hwnd)
hwnd4 = WFndWnd("Сообщение 1")
if hwnd4 then
if message1 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox1"
endif
hwnd5 = WFndWnd("Сообщение 2")
if hwnd5 then
if message2 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox2"
endif
Dim message2$
message1 = "Вы не ввели строку!"
message2 = "Вы ввели больше чем 256 символов!"
if LEN(StrVal) > 0 AND LEN(StrVal) < 257 then
Etl1$ = LEFT$(Etl$, INSTR(1,Etl$," ")-1)
Etl2$ = RIGHT$(Etl$, LEN(Etl$)-INSTR(1, Etl$," "))
if ZagVal = Etl1 AND CtrVal = Etl2 THEN
print "Тест пройден"
else
print "Тест не пройден"
endif
endif
WSetActWnd(hwnd)
hwnd4 = WFndWnd("Сообщение 1")
if hwnd4 then
if message1 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox1"
endif
hwnd5 = WFndWnd("Сообщение 2")
if hwnd5 then
if message2 = Etl then
print "Тест пройден"
else
print "Тест не пройден"
endif
else
print "Не найден MessageBox2"
endif
Вот это часть кода. пропускается, а должна выполнятся
Код:
if LEN(StrVal) > 0 AND LEN(StrVal) < 257 then
Etl1$ = LEFT$(Etl$, INSTR(1,Etl$," ")-1)
Etl2$ = RIGHT$(Etl$, LEN(Etl$)-INSTR(1, Etl$," "))
if ZagVal = Etl1 AND CtrVal = Etl2 THEN
print "Тест пройден"
else
print "Тест не пройден"
endif
endif
Etl1$ = LEFT$(Etl$, INSTR(1,Etl$," ")-1)
Etl2$ = RIGHT$(Etl$, LEN(Etl$)-INSTR(1, Etl$," "))
if ZagVal = Etl1 AND CtrVal = Etl2 THEN
print "Тест пройден"
else
print "Тест не пройден"
endif
endif
В StrVal лежит строка из введённого оля
В Etl лежат строки которая характеризует количество заглавных и строчных букв разделённые пробелом
В Etl1 лежит строка которая характеризует количество заглавных букв
В Etl2 лежит строка которая характеризует количество строчных букв
Опять надо сделать активным окно и поместить на него фокус или что-то другое нужно?
Оказываетсяся переменной StrVal лежало всегда пустое значение и этот код не работал
Код:
if LEN(StrVal) > 0 AND LEN(StrVal) < 257 then
Я тогда взял строоку из файла testT.txt которая хранится в переменной Tst и всё сразу заработало нормально.
Код:
if LEN(Tst$) > 0 AND LEN(Tst$) < 257 then