对于堆栈溢出的同一问题,我经历了一些解答。大多数答案建议使用标记。我想看看是否有其他选择可用。这是我的要求。
test_file1.py:
test_class 1
test_case1
test_case2
test_case3...so on
test_file2.py:
test_class 1
test_case1
test_casPls help to solve this.e2
test_case3...so on
像这样,我有大约30-40个不同的.py文件,它们具有不同的测试,这些测试专用于测试不同的功能。现在,我想知道如何命令测试执行。有什么方法可以从我定义了执行顺序的单个文件中触发执行?
答案 0 :(得分:0)
您已经达到了需要利用单元测试框架为您完成所需功能的程度,而无需编写代码来进行设置和拆除。
我会假设您正在使用Python的unittest
模块,否则,如果您不使用Python,肯定会具有我要向您展示的内容(如果没有) t,这可能不值得使用,您应该改用更好的东西。
根据docs,您可以添加一个名为setUp()
的方法,其中:
...测试框架将自动调用我们运行的每个测试。
import unittest
class YourTestClass(unittest.TestCase):
def setUp(self):
# Call code here to be set up
# Save the things into fields with self.whatever = calculate(...)
def someTest(self):
# Make use of self.whatever that your automatically run setUp()
# has provided for you, since the unit testing framework has
# called it before this test is run
然后如果需要的话还有tearDown()
,它将在每次单元测试后运行代码。
这意味着当您实现setUp
(以及可选的tearDown
)时,它将运行如下:
test_class1.setUp()
test_class1.test_case1
test_class1.tearDown()
test_class1.setUp()
test_class1.test_case2
test_class1.tearDown()
test_class1.setUp()
test_class1.test_case3
test_class1.tearDown()
...
您还可以做更多的事情,为此,我建议您检查一下文档。但是,这应该根据您提供给我的评论来完成。
现在,如果您在其中共享了代码(例如可能更改了一些小参数),则应在提供的链接中研究使用子测试区分测试迭代部分,以了解如何使用{{ 1}}为您处理。据说这需要Python 3.4+(我希望您使用的是Python而不是2.7之类的过时工具)。
最后,如果您只想在所有测试之前运行一次,则可以使用subTest()
来完成与setUpClass()
相同的操作,只运行一次。有关更多详细信息,请参阅文档。
简而言之:
如果需要在每次测试前做某事,请使用setUp()
如果需要在所有测试之前进行一次操作,请使用setUp()
如果您有很多相似的测试,并且只有输入到测试中的数据发生变化,请查看setUpClass()
,但这只是为了使您的代码更简洁