вместо кнопки вы можете указать тег
<a href=\"action.php?id=$row[id]\">Delete</a>
и получить идентификатор, используя $ _REQUEST ['id']
<?php
$id = вместо кнопки вы можете указать тег
[110] и получить идентификатор, используя $ _REQUEST ['id']
[111]REQUEST['id'];
// sending query
$query = "DELETE * FROM sample_data WHERE id='". вместо кнопки вы можете указать тег
[110] и получить идентификатор, используя $ _REQUEST ['id']
[111]POST["id"]."'";
$statement = $connect ->prepare($query);
if($statement->execute($data))
{
echo 'data deleted';
}
?>
Не кажется возможным в CppUnit параметризовать тестовый сценарий непосредственно (см. здесь и здесь). Однако у Вас действительно есть несколько опций:
RepeatedTest
Вы можете делать некоторое умное использование встроенного RepeatedTest
декоратор. Это позволяет тестовому сценарию быть выполненным многократно (хотя без параметризации).
Я буду признаваться в том, что никогда не использовал это сам, но возможно Вы могли иметь RepeatedTest
управляйте некоторой функцией привратника, которая была бы (использование статической переменной класса, возможно?) выбирают другой вход с каждым выполнением. Это в свою очередь вызвало бы истинную функцию, которую требуется протестировать с тем значением, как введено.
TestCase
подклассОдин человек на странице SourceForge CppUnit утверждает, что записал подкласс TestCase
это запустит конкретный тест произвольное количество раз, хотя немного отличающимся способом, чем RepeatedTest
предложения класса. К сожалению, плакат просто описал мотивацию для создания класса, но не обеспечил исходный код. Было, однако, предложение связаться с человеком для получения дополнительной информации.
Самое простое (но наименее автоматизированный) способ сделать это должно создать функцию помощника, которая берет параметр, который требуется передать "реальной" функции и затем иметь много отдельных тестовых сценариев. Каждый тестовый сценарий вызвал бы Вашу функцию помощника с различным значением.
Если бы Вы выбираете любую из первых двух упомянутых выше опций, я интересовался бы слушанием о Вашем опыте.
Я не программист на C++, но я могу помочь с понятием модульного теста:
Тестовые сценарии предназначены для выполнения изолированный и без зависимости от внешних параметров. Дополнительно необходимо подавить количество тестовых сценариев к минимуму, который покрывает большую часть кода. Существуют случаи, однако (и я уже имел дело с некоторыми), где некоторые тесты выглядят одинаково, отличаясь только некоторыми незначительными параметрами. Лучший выбор затем состоит в том, чтобы записать приспособление, которое берет параметр, Вы говорите об и затем имеете один тестовый сценарий для каждого из параметров, называя приспособление с ним. Универсальный пример следует:
class MyTestCase
# this is your fixture
def check_special_condition(param)
some
complex
tests
end
# these are your test-cases
def test_1
check_special_condition("value_1")
end
def test_2
check_special_condition("value_2")
end
end
Иначе Вы не пишете истинные тестовые сценарии, потому что они, как предполагается, восстанавливаемы без большого ведома от того, который выполняет их. Я предполагаю, что существует горстка параметров, которые все важны, как введено для тестов. Затем почему бы не сделать каждого явным в его собственном тестовом сценарии? Это - также лучший способ зарегистрировать затем, вместо того, чтобы писать отдельный документ для руководства программиста, который прочитает код несколько лет спустя.
class members : public CppUnit::TestFixture
{
int i;
float f;
};
class some_values : public members
{
void setUp()
{
// initialization here
}
};
class different_values : public members
{
void setUp()
{
// different initialization here
}
};
tempalte<class F>
class my_test : public F
{
CPPUNIT_TEST_SUITE(my_test<F>);
CPPUNIT_TEST(foo);
CPPUNIT_TEST_SUITE_END();
foo() {}
};
CPPUNIT_TEST_SUITE_REGISTRATION(my_test<some_values>);
CPPUNIT_TEST_SUITE_REGISTRATION(my_test<different_values>);
Я не знаю, считается ли это кошерным согласно «предпочтительному способу работы CppUnit», но сейчас я придерживаюсь именно такого подхода.