检查单元测试是否已通过

时间:2018-05-17 09:37:26

标签: python unit-testing python-unittest

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