объект str не вызывается для unittest - PullRequest
1 голос
/ 22 июня 2011

Я написал тестовый пример, который показывает ошибку

from unittest import *
class MyTest(unittest.TestCase):
    def test_add(self):
        self.assertEquals(1,(2-1),"Sample Subraction Test")


if __name__ == '__main__':
    unittest.main()

Вывод: объект Str не может быть вызван

Вместо «из импорта unittest *» я дал «import unittest»

это сработало

но все же я не мог точно сказать, в чем причина?

Ответы [ 2 ]

3 голосов
/ 04 августа 2011

from ... import * - опасная практика, и ее следует использовать только тогда, когда модуль / пакет был спроектирован и объявлен таким образом, и у вас есть для этого веская причина.

Оказывается, что unittest не был спроектирован таким образом, и когда этот метод используется, обнаруживаются два других «тестовых примера», но поскольку они на самом деле не являются тестовыми, они создают проблемы.

Правильный способ сделать то, что вы хотите:

import unittest
class MyTest(unittest.TestCase):
    def test_subtraction(self):
        self.assertEqual(1, (2-1), "Sample Subraction Test")

if __name__ == '__main__':
    unittest.main()

При исследовании этой проблемы я обнаружил, что переменная __all__ может и должна использоваться для определения общедоступного API - ее присутствие не означает, что from ... import * поддерживается.

0 голосов
/ 22 июня 2011

У меня получилось так. Переопределите метод runTest (), создайте экземпляр, запустите свой test_add ()

from unittest import TestCase

class MyTest(TestCase):
    def runTest(self):
        pass

    def test_add(self):
        self.assertEquals(1,(2-2),"Sample Subraction Test")


if __name__ == '__main__':
    test = MyTest()
    test.test_add()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...