JQueryUI вызывает .accordion дважды с одним идентификатором

Я пытаюсь использовать 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,))
29
задан Fabich 6 June 2019 в 10:08
поделиться