QA. Исключение тестов - PullRequest
       12

QA. Исключение тестов

0 голосов
/ 22 ноября 2010

Я настраиваю непрерывную интеграцию. Я решил реализовать возможность исключить тесты из прогона. Я вижу 3 способа сделать это:

  1. Специальный комментарий в источнике теста
  2. Центральный список исключений
  3. Исключить список в описании заявки в траке

Не могли бы вы поделиться своим опытом и указать, как применять верное решение. Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 декабря 2010

Я решил поделиться результатом.буду рад услышать любые комментарии

#!/bin/sh

USER=...
PASSWD=...

TRAC_URL=https://...

# keywords which indicates block with list of excludable tests
START_KW=excl
END_KW=endexcl

function get_active_tickets_numbers {
# wget page with active tickets
# cut number from paths like '/ticket/161', which is found in '<a title=View ticket href=/ticket/161>'


  local user=$USER
  local passwd=$PASSWD
  # set max to big value or else there will be several pages
  local active_tickets_url=$TRAC_URL/report/2?max=1000

  # uniq : link to the same ticket repeats in columns 'Ticket' and 'Summary' so delete repeats
  wget \
    --no-check-certificate --http-user=$user --http-password=$passwd -O \
    - $active_tickets_url \
  | perl -ne '/ticket\/(\d+)/; print "$1 "' \
  | uniq
}

function get_excl_list_of_ticket {
# wget ticket page
# cut blocks between $start_kw (keyword) and $end_kw that must be located in decription section
# remove html tags
# cut pathes by the rule: all allowable chars starting at the end of word

  local ticket_num=$1

  local user=$USER
  local passwd=$PASSWD
  local ticket_url=$TRAC_URL/ticket/$ticket_num
  local start_kw=$START_KW
  local end_kw=$END_KW
  local legal_char='[a-zA-Z0-9\/_\-.]'

  wget \
    --no-check-certificate --http-user=$user --http-password=$passwd -O \
    - $ticket_url \
  | perl -e \
     'undef $/;
      $_ = <>;
      while ( /'$start_kw'(.*?)'$end_kw'/sg ) {
        $block = $1;
        $block =~ s/<.*?>//sg;
        while ( $block =~ /('$legal_char'+)[ \n\t]/g ) {
          print "$1\n";
        }
      }'
}

function get_excl_list_1  {

  nums=`get_active_tickets_numbers`

  for num in ${nums[@]}; do
    get_excl_list_of_ticket $num
  done
}

function get_excl_list {

  get_excl_list_1 | uniq
}

get_excl_list
0 голосов
/ 22 ноября 2010

Я бы не рекомендовал использовать комментарии в тестовом источнике. Предполагая, что ваши тесты находятся под контролем версий, они не должны изменяться всякий раз, когда вы изменяете настройку конфигурации, подобную этой.

Трудно дать хорошую рекомендацию, не зная вашей системы сборки, но если для вашей системы обеспечения качества есть что-то вроде глобальной "конфигурации среды", я бы порекомендовал ее там. Если вы можете указать тесты для запуска в trac-билете, а затем автоматизировать запуск правильных тестов, что было бы здорово - я никогда не пробовал этого, поэтому не знал бы, возможно ли это.

...