Как я заставляю нос обнаруживать динамично сгенерированные тестовые сценарии?

Один из вариантов - добавить уникальное ограничение на три столбца в вашей таблице, которые определяют уникальность. Затем попытка вставить повторяющуюся запись должна привести к исключению Java. Но это может привести к сбою всей партии. Если вы хотите другой вариант, вы можете изменить свой запрос следующим образом:

INSERT INTO mytable
SELECT ?, ?, ?
WHERE NOT EXISTS (SELECT 1 FROM mytable
                  WHERE id = ? AND col2 = ? AND col3 = ?);

К этому запросу вы привязываете значения дважды следующим образом:

preparedStatement.setInt(1, id);
preparedStatement.setString(2, col2);
preparedStatement.setString(3, col3);
preparedStatement.setInt(4, id);
preparedStatement.setString(5, col2);
preparedStatement.setString(6, col3);
6
задан Community 23 May 2017 в 12:14
поделиться

2 ответа

Нос имеет "тестовую функцию" генератора материала как это. Вы пишете функцию генератора, которая приводит к каждой функции "тестового сценария", которую Вы хотите, чтобы она выполнила, наряду с ее args. Следуя Вашему предыдущему примеру, это могло проверить каждую из функций в отдельном тесте:

import unittest
import numpy

from somewhere import the_functions

def test_matrix_functions():
    for function in the_functions:
        yield check_matrix_function, function

def check_matrix_function(function)
    matrix1 = numpy.ones((5,10))
    matrix2 = numpy.identity(5)
    output = function(matrix1, matrix2)
    assert matrix1.shape == output.shape, \
           "%s produces output of the wrong shape" % str(function)
7
ответ дан 10 December 2019 в 02:55
поделиться

Вы могли попытаться генерировать классы тестового сценария с типом ()

class UnderTest_MixIn(object):

    def f1(self, i):
        return i + 1

    def f2(self, i):
        return i + 2

SomeDynamicTestcase = type(
    "SomeDynamicTestcase", 
    (UnderTest_MixIn, unittest.TestCase), 
    {"even_more_dynamic":"attributes .."}
)

# or even:

name = 'SomeDynamicTestcase'
globals()[name] = type(
    name, 
    (UnderTest_MixIn, unittest.TestCase), 
    {"even_more_dynamic":"attributes .."}
)

Это должно быть создано, когда нос пытается импортировать Ваш test_module, таким образом, он должен работать.

Преимущество этого подхода состоит в том, что можно создать много комбинаций тестов динамично.

0
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

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