Python Unittest框架如何进行复杂场景的单元测试?
- 内容介绍
- 文章标签
- 相关推荐
本文共计558个文字,预计阅读时间需要3分钟。
%E2%80%9C%E6%B5%8B%E8%AF%95%E5%A0%86%E7%9A%84%E7%94%A8%E9%80%94%E6%98%AF%E6%94%B6%E9%9B%86%E6%83%B3%E8%A6%81%E6%B5%8B%E8%AF%95%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BE%8B%EF%BC%8C%E4%BD%BF%E7%94%A8unittest%E6%89%A7%E8%A1%8C%E8%AF%A5%E5%A0%86%E4%B8%AD%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BE%8B%E2%80%9D + unittest.main() + %E5%B8%B8%E7%81%AB%E4%B8%8Bmain%E5%87%BD%E6%95%B0%E6%98%AF%E4%B8%80%E4%B8%AA%E9%BB%98%E8%AE%A4%E7%9A%84%E6%B5%8B%E8%AF%95%E5%A0%86%EF%BC%8C%E4%BC%9A%E6%94%B6%E9%9B%86%E6%89%80%E6%9C%89%E6%A8%A1%E5%9D%97%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BE%8B%E2%80%9D
Test suite的用途是将测试收集想要进行测试的测试用例,以便unittest执行这些选中的测试用例。
unittest.main()通常情况下main函数其实是一个默认的test suite,它默认会收集所有模块的测试用例,然后执行它们。以如下测试用例为例,在执行单元测试时,由于已经在代码下方设置了main函数,那么运行命令可以简化为"python test_apple.py"。
import unittestfrom apple import Apple
class AppleTestCases(unittest.TestCase):
def setUp(self):
self.apple = Apple()
#raise Exception("This is an exception!!!")
def test_default_apple_quantity(self):
self.assertEqual(self.apple.quantity(),200,'default quantity is wrong.')
def test_re_fill_quantity(self):
self.apple.re_fill(500)
self.assertEqual(self.apple.quantity(),500,'wrong quantity after re-fill.')
def tearDown(self):
print("The testing is done.")
if __name__ == '__main__':
unittest.main()
定制化测试集合在实际项目中,可能需要定制化测试集合的情况比较多,因为正常项目中一个模块(功能模块)的测试用例可能有很多,而有时只需要执行部分即可。
首先可以先定义一个test suite函数,具体如下所示:
def suite1():suite = unittest.TestSuite()
suite.addTest(AppleTestCases('test_default_apple_quantity'))
return suite
其次在执行这些测试用例时,也需要添加类似如下代码,去调用TestSuite实例。
if __name__ == '__main__':runner = unittest.TextTestRunner()
runner.run(suite1())
执行结果如下,实现了定制化Test Suite的目的。
如果大家想掌握第一手的资讯更新,请关注公众号“测试DAO”。
本文共计558个文字,预计阅读时间需要3分钟。
%E2%80%9C%E6%B5%8B%E8%AF%95%E5%A0%86%E7%9A%84%E7%94%A8%E9%80%94%E6%98%AF%E6%94%B6%E9%9B%86%E6%83%B3%E8%A6%81%E6%B5%8B%E8%AF%95%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BE%8B%EF%BC%8C%E4%BD%BF%E7%94%A8unittest%E6%89%A7%E8%A1%8C%E8%AF%A5%E5%A0%86%E4%B8%AD%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BE%8B%E2%80%9D + unittest.main() + %E5%B8%B8%E7%81%AB%E4%B8%8Bmain%E5%87%BD%E6%95%B0%E6%98%AF%E4%B8%80%E4%B8%AA%E9%BB%98%E8%AE%A4%E7%9A%84%E6%B5%8B%E8%AF%95%E5%A0%86%EF%BC%8C%E4%BC%9A%E6%94%B6%E9%9B%86%E6%89%80%E6%9C%89%E6%A8%A1%E5%9D%97%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BE%8B%E2%80%9D
Test suite的用途是将测试收集想要进行测试的测试用例,以便unittest执行这些选中的测试用例。
unittest.main()通常情况下main函数其实是一个默认的test suite,它默认会收集所有模块的测试用例,然后执行它们。以如下测试用例为例,在执行单元测试时,由于已经在代码下方设置了main函数,那么运行命令可以简化为"python test_apple.py"。
import unittestfrom apple import Apple
class AppleTestCases(unittest.TestCase):
def setUp(self):
self.apple = Apple()
#raise Exception("This is an exception!!!")
def test_default_apple_quantity(self):
self.assertEqual(self.apple.quantity(),200,'default quantity is wrong.')
def test_re_fill_quantity(self):
self.apple.re_fill(500)
self.assertEqual(self.apple.quantity(),500,'wrong quantity after re-fill.')
def tearDown(self):
print("The testing is done.")
if __name__ == '__main__':
unittest.main()
定制化测试集合在实际项目中,可能需要定制化测试集合的情况比较多,因为正常项目中一个模块(功能模块)的测试用例可能有很多,而有时只需要执行部分即可。
首先可以先定义一个test suite函数,具体如下所示:
def suite1():suite = unittest.TestSuite()
suite.addTest(AppleTestCases('test_default_apple_quantity'))
return suite
其次在执行这些测试用例时,也需要添加类似如下代码,去调用TestSuite实例。
if __name__ == '__main__':runner = unittest.TextTestRunner()
runner.run(suite1())
执行结果如下,实现了定制化Test Suite的目的。
如果大家想掌握第一手的资讯更新,请关注公众号“测试DAO”。

