unittest Python и динамическое создание тестовых сценариев [дубликат]

Начиная с 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*

22
задан Community 23 May 2017 в 12:16
поделиться

2 ответа

Для этого вы должны использовать тестовые генераторы в носу. Все, что вам нужно сделать, это создать кортеж, первая из которых является функцией, а остальные - аргументами. Вот пример из документации.

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
12
ответ дан 29 November 2019 в 04:57
поделиться

В следующем решении класс 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))
23
ответ дан 29 November 2019 в 04:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: