python - пометить юнит-тесты по различным категориям: юнит, интеграция, «опасная_интеграция» - PullRequest
0 голосов
/ 07 апреля 2019

Вопрос в том, есть ли способ пометить юнит-тесты по разным категориям: юнит, интеграция, «опасная_интеграция». Затем, скажем, из настройки «Team City», автоматически пропустить «опасных_интеграции»?

Для тестов, помеченных как «Опасные» - они не должны запускаться автоматически. Это нужно запускать вручную, желательно даже на отладчике с очень внимательным присмотром?

Для python, вот пример, где у меня есть класс, который может отправлять реальные сделки на криптообменники. Я по существу шунтирую все тестовые методы с «возвратом» в качестве первой строки тестового метода, чтобы избежать ситуации, когда мы непреднамеренно отправляем прямые сделки на улицу.

import unittest
class BinanaceConnectorTests(unittest.TestCase):
    def setUp(self):
        ... 

    def tearDown(self):
        ...

    def testSendRealOrders(self):
        return <-- I hardcode return here so nobody accidentally 
        ... actual implementation shunted by above return ...

Это правильный способ сделать это? Я использую Visual Studio. Я помню, что в C # с xunit есть способ пометить юнит-тесты различными категориями .

Я думаю, что нет такой вещи, как "опасная_интеграция" тестов - если вам нужна такая вещь, отделите эти тесты от ручного скрипта на python и просто не помечайте их как модульные тесты любого вида. Это было бы самым безопасным.

1 Ответ

0 голосов
/ 17 апреля 2019

Сценарии для выборочного выполнения теста, которые вы представили (например, опасная_интеграция), вероятно, должны лучше рассматриваться по-другому, как уже обсуждалось в комментариях. Однако существуют ситуации, когда вы хотите, чтобы определенные тесты были исключены в обычном случае. Например, у вас могут быть длительные тесты, которые вы хотите выполнять только изредка. Или некоторые тесты дают результаты, выходящие за рамки простых «пройденных» или «неуспешных» результатов, которые требуют тщательного анализа, который также нужно запускать только время от времени.

Один из подходов может состоять в том, чтобы сгруппировать эти тесты в собственные классы и использовать их для включения или исключения их из соответствующих прогонов. Или, если кажется более уместным реализовать эти тесты вместе с другими тестами, вы можете использовать какое-то соглашение об именах, указывающее, к какой категории относится тест. У вас есть возможность выборочно запускать тесты, которые сгруппированы или названы определенным образом, как описано в руководстве по тестированию Python: https://docs.python.org/3.7/library/unittest.html. Например, атрибут testNamePatterns из unittest.TestLoader может использоваться для выбора тесты на основе их имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...