2016-03-25 2 views
0

Я хочу проверить параметры/аргументы, передаваемые моему коду, и их ожидаемый результат. Я использую Optparse, чтобы принять эти аргументы. Сейчас код я тестирую просто выполняетTestCase для тестирования Optparse bad/missing аргумент

parser.error("Some message")

, когда мне не хватает аргументов, или если я прошел плохой аргумент.

При вводе плохих аргументов. Как я могу проверить это? Какой метод можно использовать в unittest.TestCase, чтобы утверждать, что произошло parser.error()?

+1

[* "В любом случае,' optparse' обрабатывает ошибку таким же образом: он выводит сообщение об использовании программы и сообщение об ошибке в стандартный поток ошибок и выходов с состоянием ошибки 2. «*] (https://docs.python.org/2/library/optparse.html#how-optparse-handles-errors) - вы, вероятно, не можете проверить это, так как тестируемый код завершает работу Python. – jonrsharpe

+0

Частично вне темы (не используя optparse), но я использую пакет 'click', который предлагает' от click.testing import CliRunner'. Это можно использовать для вызова команд и оценки результатов. Подробнее в [click.testing docs] (http://click.pocoo.org/5/testing/). –

ответ

0

Вы должны обратить внимание на макете модуле:

import mock 
import unittest 


class TestCase(unittest.TestCase): 

    def test_parser(self): 
     with mock.patch('path.to.your.function') as error_mock: 
      call_your_code() 
      self.assertEqual(error_mock.called, True) 
Смежные вопросы