Я пытаюсь использовать AJAX для динамического создания JquerUI Accordion на основе того, что выбрано в поле. В настоящее время у меня есть
<div style="display:none" id="testselect">
</div>
С JS
$("#courseselect").change(function () {
$("#testselect").html(""); // Empty any previous data
$("#testselect").css("display", "block"); // Display it if it was hidden
$.getJSON('json.php?show=tests&courseid=' + $(this).val(), function(data) {
for(x in data)
{
$("#testselect").append("<h3 value=\"" + data[x].uno + "\"><a href=\"#\">" + data[x].name + "</a></h3>");
$("#testselect").append("<div>Foo</div>");
}
$("#testselect").accordion({ change:function(event, ui) { courseid = ui.newHeader.attr("value");
} });
});
});
. Теперь это работает, когда я впервые изменяю свой выбор, но после этого он возвращается к обычному старому неформатированному HTML. Как будто вызов .accordion () никогда не выполнялся Я предполагаю, что это как-то связано с тем, что JQuery не хочет, чтобы я что-то форматировал дважды, но я действительно понятия не имею. ) вставить в MyTable (MyStatus) выберите класс 'A' и перечислите: открытый класс MyTable {public ...
Моя таблица:
create table MyTable (
Id int identity(1,1) not null,
MyStatus char(2) not null
)
insert into MyTable(MyStatus) select 'A'
Класс и перечисление:
public class MyTable
{
public virtual int Id { get; set; }
public virtual MyTableStatus MyStatus { get; set; }
}
public enum MyTableStatus
{
A,
B
}
Отображение:
public MyTableMap()
{
Id(x => x.Id);
Map(x => x.MyStatus);
}
Когда я выполняю следующий тест, я получаю System.FormatException: входная строка была в неправильном формате ...
[Test]
public void Blah()
{
MyTable myTable = Session.Get<MyTable>(1);
Assert.That(myTable.MyStatus, Is.EqualTo(MyTableStatus.A));
}
Как правильно сопоставить перечисление с его строковым представлением в базе данных?
Изменить - я пишу свое приложение в существующей базе данных, которую я не могу легко изменить, потому что она также используется другими приложениями. Итак, некоторые поля в базе данных (которые я хотел бы представить как перечисления в моем приложении) имеют тип int, а некоторые - тип char (2). lib / tests / testsuite1 / testsuite1.py testsuite2 / testsuite2.py testsuite3 / ...
У меня следующая структура каталогов:
runner.py
lib/
tests/
testsuite1/
testsuite1.py
testsuite2/
testsuite2.py
testsuite3/
testsuite3.py
testsuite4/
testsuite4.py
Формат модулей testsuite * .py следующий:
import pytest class testsomething: def setup_class(self): ''' do some setup ''' # Do some setup stuff here def teardown_class(self): '''' do some teardown''' # Do some teardown stuff here def test1(self): # Do some test1 related stuff def test2(self): # Do some test2 related stuff .... .... .... def test40(self): # Do some test40 related stuff if __name__=='__main()__' pytest.main(args=[os.path.abspath(__file__)])
У меня возникла проблема что я хотел бы запускать "testsuites" параллельно, т.е. я хочу, чтобы testsuite1, testsuite2, testsuite3 и testsuite4 запускались параллельно, но отдельные тесты в наборах тестов должны выполняться последовательно.
Когда я использую плагин 'xdist' из py.test и запускайте тесты с помощью py.test -n 4, py.test собирает все тесты и случайным образом балансирует их нагрузку между 4 рабочими. Это приводит к тому, что метод setup_class будет выполняться каждый раз при каждом тесте в модуле testsuitex.py (что противоречит моей цели. Я хочу, чтобы setup_class выполнялся только один раз для каждого класса, а тесты выполнялись последовательно после этого.
По сути, я хочу, чтобы выполнение выглядело так:
worker1: executes all tests in testsuite1.py serially worker2: executes all tests in testsuite2.py serially worker3: executes all tests in testsuite3.py serially worker4: executes all tests in testsuite4.py serially
в то время как worker1, worker2, worker3 и worker4
- все выполняются параллельно.
Есть ли способ добиться этого в среде 'pytest-xidst'?
Единственный вариант, который я могу придумать, - это запускать разные процессы для индивидуального выполнения каждого набора тестов в runner.py :
def test_execute_func(testsuite_path): subprocess.process('py.test %s' % testsuite_path) if __name__=='__main__': #Gather all the testsuite names for each testsuite: multiprocessing.Process(test_execute_func,(testsuite_path,))