Начиная с Java 1.5, String.format()
может использоваться, чтобы слева/справа дополнить данную строку.
public static String padRight(String s, int n) {
return String.format("%-" + n + "s", s);
}
public static String padLeft(String s, int n) {
return String.format("%" + n + "s", s);
}
...
public static void main(String args[]) throws Exception {
System.out.println(padRight("Howto", 20) + "*");
System.out.println(padLeft("Howto", 20) + "*");
}
И вывод:
Howto *
Howto*
Для этого вы должны использовать тестовые генераторы в носу. Все, что вам нужно сделать, это создать кортеж, первая из которых является функцией, а остальные - аргументами. Вот пример из документации.
def test_evens():
for i in range(0, 5):
yield check_even, i, i*3
def check_even(n, nn):
assert n % 2 == 0 or nn % 2 == 0
В следующем решении класс Tests
содержит вспомогательный метод check
и не содержит статически определенных тестовых примеров. Затем, чтобы динамически добавлять тестовые примеры, я использую setattr
для определения функций в классе. В следующем примере я генерирую тестовые примеры test_ _
с охватом i и j [1,3] и [2,5] соответственно, которые используют вспомогательный метод check
с разными значениями i и j.
class Tests(unittest.TestCase):
def check(self, i, j):
self.assertNotEquals(0, i-j)
for i in xrange(1, 4):
for j in xrange(2, 6):
def ch(i, j):
return lambda self: self.check(i, j)
setattr(Tests, "test_%r_%r" % (i, j), ch(i, j))