В моей тестовой настройке я проверяю функции коммутатора и маршрутизаторов на индивидуальные права пользователей.
Настройка
Я использую различные пакеты, Testcore содержит Paramiko как единый пакет. У меня есть полный доступ к функциям этого пакета.
import testcore
from testcore.control.ssh import SSH
import unittest
from test import support
Я подключаю каждый к коммутатору и маршрутизатору через Paramiko и SSH
def setUp(self):
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='xxxx', password='xxxx')
self.s.query_interactive = True
После входа в систему на коммутаторе или маршрутизаторе я провожу свой тест с помощью запросов к приглашению. Здесь вы можете увидеть структуру первого тестового примера, который я запускаю.
def test_create_user_rights_1(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 1 testuser_P1 testuser_P1')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='testuser_P2', password='testuser_P2')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_1(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
Первый из 5 тестов также отлично работает.
test_create_user_rights_1 ( main .SwitchAccount) ... ТЕСТ ТЕСТ ТЕСТ
exec "logout" превысил тайм-аут None (данные не получены вообще)
ok test_create_user_rights_2 ( main .SwitchAccount) ... TEST TEST
TEST exec "logout" превысил тайм-аут None (данные не получены вообще)
Подождите нормально test_create_user_rights_3 ( main .SwitchAccount) ... TEST
TEST TEST exec "logout" превысил тайм-аут Нет (данные не получены в
все) Подождите, хорошо test_create_user_rights_4 ( main .SwitchAccount) ...
TEST TEST TEST exec "logout" превысил тайм-аут None (нет данных
получил вообще) жди окей test_create_user_rights_5
( main .SwitchAccount) ... TEST TEST TEST exec "logout" превышен
тайм-аут None (данные вообще не получены)
test_create_user_rights_7 ( main .SwitchAccount) ... TEST TEST TEST
exec "logout" превысил тайм-аут None (данные не получены вообще)
ok test_create_user_rights_8 ( main .SwitchAccount) ... TEST TEST
TEST exec "logout" превысил тайм-аут None (данные не получены вообще)
Подождите нормально test_try_wrong_promp_command_1 ( main .SwitchAccount) ...
TEST TEST TEST Подождите, хорошо test_try_wrong_promp_command_2
( main .SwitchAccount) ... TEST TEST TEST Подождите, все в порядке
test_try_wrong_promp_command_3 ( main .SwitchAccount) ... TEST TEST
ТЕСТ Подожди ок
И тут начинаем выпускать:
test_try_wrong_promp_command_4 ( main .SwitchAccount) ... TEST ERROR
test_try_wrong_promp_command_5 ( main .SwitchAccount) ... ОШИБКА ТЕСТА
test_try_wrong_promp_command_6 ( main .SwitchAccount) ... ОШИБКА ТЕСТА
test_try_wrong_promp_command_7 ( main .SwitchAccount) ... ОШИБКА ТЕСТА
test_try_wrong_promp_command_8 ( main .SwitchAccount) ... ОШИБКА ТЕСТА
Обзор проблемы показывает
повышение socket.error ('Сокет закрыт') OSError: Сокет закрыт
=============================================== ======================= ОШИБКА: test_try_wrong_promp_command_4 ( main .SwitchAccount)
-------------------------------------------------- -------------------- Traceback (последний вызов был последним): File
"C: \ Users \ frentmei \ Desktop \ PY3-testcore \ Switch_Test \ Complete \ Usertest \ test_create_user_different_privileg.py",
строка 148, в test_try_wrong_promp_command_4
q = self.s.query ('account') Файл "C: \ Python37 \ lib \ site-packages \ testcore \ control \ ssh.py", строка 281, в
запрос
вернуть self._query_interactive (* args, ** kwargs) Файл "C: \ Python37 \ lib \ site-packages \ testcore \ control \ ssh.py", строка 329, в
_query_interactive
self.send (запрос) Файл "C: \ Python37 \ lib \ site-packages \ testcore \ control \ ssh.py", строка 195, в
Отправить
self._interactive_stdin.write (text + self.lb) Файл "C: \ Python37 \ lib \ site-packages \ paramiko \ file.py", строка 402, в записи
self._write_all (data) Файл "C: \ Python37 \ lib \ site-packages \ paramiko \ file.py", строка 519, в
_write_all
count = self._write (data) Файл "C: \ Python37 \ lib \ site-packages \ paramiko \ channel.py", строка 1335, в
_записывать
self.channel.sendall (data) Файл "C: \ Python37 \ lib \ site-packages \ paramiko \ channel.py", строка 831, в
отправьте всеsent = self.send (s) Файл "C: \ Python37 \ lib \ site-packages \ paramiko \ channel.py", строка 785, в send
вернуть self._send (s, m) Файл "C: \ Python37 \ lib \ site-packages \ paramiko \ channel.py", строка 1170, в
_Отправить
поднять socket.error ('Сокет закрыт') OSError: Сокет закрыт
----------------------------------------------- ----------------------- Провел 15 тестов за 69,561 с
FAILED (ошибки = 5)
Дополнительные пояснения
Для настройки теста:
Как описано выше, я использую подсказку маршрутизатора или коммутатора для автоматической проверки соответствующих команд.
Создать пользователя с другими правами
def test_create_user_rights_4(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 4 testuser_P4 testuser_P4')
q = self.s.query('logout')
Как только пользователь был создан, я выхожу из системы в тесте
def test_create_user_rights_5(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 5 testuser_P5 testuser_P5')
q = self.s.query('logout')
После выхода из системы создается следующий пользователь.
В моем случае, однако, эта ошибка выдается после теста 4.
Прилагается полный источник
import testcore
from testcore.control.ssh import SSH
import unittest
from test import support
class SwitchAccount(unittest.TestCase): # This class inherits unittest.TestCase
def setUp(self):
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='admin', password='admin')
self.s.query_interactive = True
def test_create_user_rights_1(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 1 testuser_P1 testuser_P1')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='testuser_P2', password='testuser_P2')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_1(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_2(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 2 testuser_P2 testuser_P2')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='testuser_P2', password='testuser_P2')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_2(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_3(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 3 testuser_P3 testuser_P3')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='testuser_P3', password='testuser_P3')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_3(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_4(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 4 testuser_P4 testuser_P4')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='testuser_P4', password='testuser_P4')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_4(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_5(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 5 testuser_P5 testuser_P5')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='testuser_P5', password='testuser_P5')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_5(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_5(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 5 testuser_P5 testuser_P5')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xx.56.250', username='testuser_P4', password='testuser_P4')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_5(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_4(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 6 testuser_P6 testuser_P6')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xx.56.250', username='testuser_P6', password='testuser_P6')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_6(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_7(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 7 testuser_P6 testuser_P7')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.250', username='testuser_P7', password='testuser_P7')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_7(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
def test_create_user_rights_8(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('add 8 testuser_P6 testuser_P8')
q = self.s.query('logout')
self.s = testcore.control.ssh.SSH(host='xxx.xxx.xxx.xxx', username='testuser_P8', password='testuser_P8')
import time
print('Wait')
time.sleep(2)
def test_try_wrong_promp_command_8(self):
if self.s.login():
q = self.s.query('account')
# switch to prompt account
q = self.s.query('aaa')
q = self.s.query('trace ')
import time
print('Wait')
time.sleep(3)
if __name__ == '__main__':
unittest.main(verbosity=3)
unittest.main(warnings='ig-nore')
log_file = 'log_file.txt'
f = open(log_file, "w")
Несколько вопросов
- Поможет ли интеграция комплекта тестов создать это? Имеется в виду Unittest Testsuite
- Решит ли переход на Pytest проблему здесь?