Python: модульный тестовый пример не показывает ошибки, если вход не работает

1

Настроить

Я использую следующие пакеты в дополнение к Python 3.7: Testcore (специальный пакет с paramiko внутри!), Pyserial

import testcore
from testcore.control.ssh import SSH
import unittest
from test import support
import logging
import os


def setUp(self):

    self.s = testcore.control.ssh.SSH(host='172.23.xx.xxx',
                                  username='admin', password='admin', type_of_dut='ecos')
    logger.info('self.s = testcore.control.ssh.SSH')
    self.s.query_interactive=True


    if self.s.login():
        logger.info('login')
        q = self.s.query('account')
        logger.info('account')
        self.assertIsNotNone(q, 'missing answer')
        self.assertEqual('\r\n', q, 'unexpected result')
        logger.info('missing answer')
        logger.info('unexpected result')

        # switch to prompt account

        q=self.s.query('enforce-Password-Rules yes')
        logger.info('enforce-Password-Rules yes')
        q=self.s.query('exit')
        logger.info('exit')

def tearDown(self):
    self.s.close()

Информация:

В моей структуре накладываются различные пользователи на аппаратный коммутатор. Во втором тесте я проверяю, может ли вновь созданный пользователь войти в систему.

Согласно журналу, он также может войти в систему, который также регистрируется соответствующим образом.

В моей структуре не действует то, что должно произойти, если тестовый пример не срабатывает, на самом деле тестовый пример не должен регистрироваться, когда он войдет в систему, поскольку он не может подключиться. К сожалению, он пишет это только в журнале, и тестовый пример все еще положительный.

Создать пользователя

    def test_create_user_1(self):
    logger_true.info('test_create_user_1')
    if self.s.loggedin:
        logger.info('self.s.loggedin')
        q = self.s.query('account')
        logger.info('account')
        self.assertIsNotNone(q, 'missing answer')
        self.assertEqual('\r\n', q, 'unexpected result')
        logger.info('missing answer')
        logger.info('unexpected result')

        # switch to prompt account

        q = self.s.query('add 1 testuser_P1 testuser_P1')
        logger.info('add 1 testuser_P1 testuser_P1')
        q = self.s.query('exit')
        self.assertIsNotNone(q, 'missing answer')
        self.assertEqual('\r\n', q, 'unexpected result')
        logger.info('missing answer')
        logger.info('unexpected result')

        q = self.s.query('logout')
        logger.info('logout')

        import time
        print('Wait')
        time.sleep(2)
        print('True')
        logger_true.info('True')
        self.s.close()

Пользователь явно создан (если посмотреть на команду "Переключить команду" Показать список пользователей). Пока что все положительно, и этот тестовый пример передан.

На следующем шаге я хочу сделать логин, который проверяет, может ли пользователь войти в запрос.

Проблема:

Если я удалю пароль для отрицательного теста из SSH-соединения на self.s = testcore.control.ssh.SSH(host = '172.xx.xx.xxx', username = 'testuser_P1', password = 'testuser_P1'), тест будет проходить в любом случае. Поэтому тест не показан как отрицательный.

Любая идея исправить это?

Теги:
python-3.x
unit-testing
python-2.7
python-unittest

1 ответ

0

Проблема была исправлена мной. Я закончил

self.s.login() self.assertEqual(self.s.loggedin, False)

В соответствии с утверждением я не регистрируюсь как ложный. Это регистрируется через другой файл журнала.

    def test_try_login2(self):
    logger_true.info('test_try_login1')
    self.s.close()
    self.s = testcore.control.ssh.SSH(host='172.23.xxx.xxx',username='testuser_P2', password='testuser_P2')
    self.s.query_interactive = True

    self.s.login()
    self.assertEqual(self.s.loggedin, False)
    print('True')
    logger_true.info('True')
    self.s.close()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню