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