Python: модульный тестовый пример не показывает ошибки, если вход не работает - PullRequest
0 голосов
/ 25 сентября 2018

Настройка

В дополнение к 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'), тест все равно будет выполняться.Поэтому тест не показан как отрицательный.

Есть идеи, чтобы это исправить?

1 Ответ

0 голосов
/ 26 сентября 2018

Проблема была исправлена ​​мной. У меня более

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()
...