проверить, прошел ли юнит-тест - PullRequest
0 голосов
/ 17 мая 2018

Я разработал сканер и его модульные тесты (в основном для проверки XPATH). Я хочу запустить определенные модульные тесты перед выполнением скрипта, чтобы убедиться, что структура HTML не изменилась и все еще работают существующие XPATH. Я не хочу вывод модульного теста, просто флаг: пройден или не пройден.

например:

tests.py:

import unittest

class CrwTst(unittest.TestCase):
    def test_1(self):
        [..]

crawler.py

class Crawler(object):
    def action_1(self):
        [..]

и я хочу работать как:

if CrwTst.test_1() is True:
    Crawler.action_1()

1 Ответ

0 голосов
/ 23 мая 2018

Вы могли бы потенциально сделать это:

crawler.py

import unittest
from tests import CrwTst

if unittest.TextTestRunner().run(CrwTst('test_1')).wasSuccessful():
    Crawler.action_1()

Обратите внимание, что вы можете столкнуться с проблемой циклического импорта, поскольку ваш тест, по-видимому, уже зависит от Crawler, и от того, что вы хотите сделать, Crawler зависит от теста. Скорее всего, это проявится как ImportError: cannot import name CrwTst.

Чтобы решить эту проблему, вы можете динамически импортировать CrwTst.

crawler.py

import unittest

def function_that_runs_crawler():
    from tests import CrwTst  # Dynamically import to resolve circular ref

    if unittest.TextTestRunner().run(CrwTst('test_1')).wasSuccessful():
        Crawler.action_1()
...