检查单元测试是否通过

check if unit-test has passed

我开发了一个爬虫和它的单元测试(主要是为了验证 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()

您可以这样做:

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()