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