import unittest
class MyTestCase(unittest.TestCase):
def test_with_docstring(self):
"""Test that something does something \
i can fly
"""
def test_without_docstring(self):
pass
if __name__ == '__main__':
nose.run(argv=["nosetests" "***.py", "--verbosity=2"])
>>>Validation of ****** i can fly
>>>test_without_docstring (tmp.MyTestCase)
Как избавится от пробелов? (в одну строку писать нельзя т.к. PEP 8)
Такое решение не подходит:
import unittest
class MyTestCase(unittest.TestCase):
def test_with_docstring(self):
"""Test that something does something \
i can fly
"""
def test_without_docstring(self):
pass
if __name__ == '__main__':
nose.run(argv=["nosetests" "***.py", "--verbosity=2"])
>>>Validation of ****** i can fly
PEP8 хорош, но это не must have. Сейчас у 8\10 есть вайдскрин мониторы, и конкретно конвенция по 79 символам - очень спорная.
Символ разрыва строки у вас - должен быть для разбиеня кода? В этом случае нужно закрыть string кавычками, чтобы символ разрыва строки не расценивался как подстрока.
Ну это я указал, как можно задавать строку в другом формате.
Честно говоря, я не знаю как вы проверяете ваш код, но вот этот не должен выдавать никаких ошибок по pep8
import unittest
class MyTestCase(unittest.TestCase):
def test_with_docstring(self):
"""Test that something does something i can fly"""
pass
class MyTestCase1(unittest.TestCase):
def test_with_docstring(self):
"""
Really big test documentation with
some description and some of big text
and some description and some of big text
some description and some of big text
some description and some of big text
"""
pass
class MyTestCase2(unittest.TestCase):
def test_with_docstring(self):
"""
Really big test documentation with
some description and some of big text
and some description and some of big text
some description and some of big text
some description and some of big text
"""
pass
class MyTestCase(unittest.TestCase):
def test_with_docstring(self):
“”“Test that something does something i can fly”""
pass
Устраивает это - но только пока не нужно вставить 150 символов
Это решение есть и оно подходит, я хочу найти другое потому что кто то может забыть поставить “” в конце строки т.к. система никак не реагирует на то, что я пропустил символ “”
Прошу прощения - если изначально неправильно изьяснил задачу
Для того чтобы решить такую проблему, нужно использовать декоратор
import unittest
def fix_doc_strings(cls):
for name, method in cls.__dict__.iteritems():
if callable(method):
doc_str = " ".join(map(str.strip, method.__doc__.splitlines()))
method.__doc__ = doc_str
return cls
@fix_doc_strings
class MyTestCase2(unittest.TestCase):
def test_with_docstring(self):
"""
with fix: Really big test documentation with
some description
and big text
and extra words
"""
pass
class MyTestCase3(unittest.TestCase):
def test_with_docstring(self):
"""
Without fix: Really big test documentation with
some description and some of big text
and some extra words
"""
pass
и вывод получается вот таким
>nosetests -v demo.py
with fix: Really big test documentation with some description and big text and extra words ... ok
Without fix: Really big test documentation with ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.002s
OK
Я так понимаю это то что Вам надо было. Декоратор @fix_doc_strings нужно прописывать для каждого класса в модуле как видно. Но и это можно обойти через использование метаклассов на уровне модуля. Но это уже другая история
Ну для того чтобы не присваивать декоратор для каждого тестового класса в модуле, можно сделать метакласс на уровне модуля и который будет влиять на формирование тестовых классов в модуле. В интернете много информации по поводу метаклассов, посмотрите, почитайте, а будут конкретные вопросы, напишите. А если надо будет что-то хитромудрое решение сделать, то обращайтесь сюда Поиск 🔍 организации или лица - Предоставление сведений из ЕГРЮЛ/ЕГРИП в электронном виде