#python #python-2.7 #unit-testing #pytest
#python #python-2.7 #модульное тестирование #pytest
Вопрос:
у меня есть функция, которая делает что-то вроде
def foo():
return ["echo", "-e", "thisnisnmultiline"]
это записывается в файл .sh, который будет выполнен в какой-то момент, и я хотел бы выполнить unitest, чтобы проверить, что строка все еще имеет n
в последнем аргументе, и что она не была записана как
echo -e this
is
multiline
Я не знаю, как оценить строку, чтобы получить представление после печати.
я знаю, что мог бы записать это, прочитать и проверить, правильно ли это, но, похоже, unitesting действительно не нравится такой подход.
как бы это сделать? (предпочтительно с использованием python 2.7)
Комментарии:
1.
os.popen(["/bin/echo", "-e", "thisnisnmultiline"]).read()
? позволит вам проверить вывод2. команда не обязательно будет командой echo. Ну и что? но не совсем. это дает идею просто распечатать его и захватить поток. Но это тоже звучит не слишком правильно
3. Я уже сделал эту демонстрационную версию unittest с python 3.8, надеюсь, это поможет вам github.com/IT-Support-L2/Unit_TestDemo
Ответ №1:
используйте функцию string splitlines
a = "1n2n3"
b = r"1n2n3"
c = "1\n2\n3"
len(a.splitlines()) # 3
len(b.splitlines()) # 1
len(c.splitlines()) # 1