unittest для пользовательских ошибок - PullRequest
0 голосов
/ 06 мая 2018

У меня есть три разных файла:

Файл класса lang.py, имеющий следующую функцию

from errors import StatusCodeError
class LangModel:
    def __init__(self, localpath2fst, host="127.0.0.1", port="5000", logfile="log"):
        ...
    def state_update(self):
        """
        Initialize the language model (on the server side)
        """
        try:
            r = requests.post(
            'http://' +
            self.host +
            ':' +
            self.port +
            '/init')
        except requests.ConnectionError:
            raise ConnectionErr(self.host, self.port)
        if not r.status_code == requests.codes.ok:
            raise StatusCodeError(r.status_code)

Файл ошибок error.py:

class StatusCodeError(Exception):
    def __init__(self, status_code):
        self.dErrArgs = status_code
        Exception.__init__(
            self,
            "Connection was not established and has status code {0}".format(self.dErrArgs))

и третий файл test.py

import unittest
from lang import LangModel
from errors import StatusCodeError

class TestPreLM(unittest.TestCase):
    def test_incorrect_input(self):
     """
     confirm the process provides
     an error given an incorrect
     input
     """
     abs_path_fst = os.path.abspath("a valid path")
     # local fst
     localfst = abs_path_fst
     # init LMWrapper
     lmodel = LangModel(
      localfst,
      host='127.0.0.1',
      port='5000',
      logfile="lmwrap.log")
      # try to get priors
      with self.assertRaises(StatusCodeError):
         lmodel.state_update(['3'])

Как ни странно, когда у меня есть тестовый код, найденный в файле класса, тест проходит успешно, но когда он обнаружен изолированно (в test.py), тест не пройден, и я не уверен, почему. Если ты сможешь облегчить мой путь, я буду счастлив;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...