Python 检查单元测试是否通过
我开发了一个爬虫程序及其单元测试(主要用于验证XPath)。我想在脚本执行之前运行特定的单元测试,以确保HTML结构没有改变,并且现有的XPath仍在工作。我不需要单元测试的输出,只需要一个标志:通过或失败 例如: tests.py:Python 检查单元测试是否通过,python,unit-testing,python-unittest,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 acti
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()
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()
但是请注意,您可能会遇到循环导入的问题,因为您的测试可能已经依赖于爬虫程序
,并且您希望执行的操作将使爬虫程序
依赖于测试。这可能会表现为导入错误:无法导入名称CrwTst
要解决此问题,可以动态导入CrwTst
crawler.py
import unittest
from tests import CrwTst
if unittest.TextTestRunner().run(CrwTst('test_1')).wasSuccessful():
Crawler.action_1()
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()
测试失败时会引发异常(通常是断言错误)。所以,只要你没有发现这个错误,你就可以做
test_my_thing();操作1()
。ZdaR也是对的,这似乎是单元测试的一种奇怪用法(它旨在测试代码本身,而不是验证传递给代码的数据),您可以创建一个验证函数,它要么返回True
要么返回False
@ZdaR我有很多测试用例,我认为最好在其他单元测试中保留这种验证。我是单元测试开发的新手,也许你是对的。@TomDalton我正试图从测试导入CrwTst到crawler.py导入CrwTst
,我收到导入错误导入错误:无法导入名称CrwTst