unittest简介

unittest重要概念

  • Testcase   一个TestCase的实例就是一个测试用例,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown).单元测试(unittest)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证
  • TestSuite   多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite
  • TestRunner  是用来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法
  • TestLoader 是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例
  • TestFixture  对一个测试用例环节的搭建和销毁,是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现

setup和teardown

方法分类

  • 类方法,类方法在执行过程中只执行一次,setUpClass和tearDownClass
  • 实例方法,实例方法每运行一个用例都执行一次,setUp,tearDown

执行顺序

  • setUpClass >> setUp >> testA >> tearDown >> setUp >> testB >> tearDown >> tearDownClass
  • 用例之间按用例名称ASCII码的顺序加载,数字与字母顺序为0-9,A-Z,a-z

控制用例执行顺序

方式1(Pycharm不适用),通过TestSuite类的addTest方法,按顺序加载测试用例:

suite = unittest.TestSuite()
suite.addTest(TestLegion("test_create_legion"))
suite.addTest(TestLegion("test_bless"))
suite.addTest(TestLegion("test_receive_bless_box"))
suite.addTest(TestLegion("test_quit_legion"))
unittest.TextTestRunner(verbosity=3).run(suite)

方式2,通过修改函数名的方式:

class TestLegion(unittest.TestCase):
def test_1_create_legion(self):
pass
def test_2_bless(self):
pass
def test_3_receive_bless_box(self):
pass
def test_4_quit_legion(self):
pass

执一个测试类

#方法一:
if __name__ == '__main__':
suite=unittest.TestSuite(unittest.makeSuite(Baidu))
unittest.TextTestRunner(verbosity=2).run(suite)
#方法二
if __name__ = '__main':
suite=unittest.TestLoader().loadTestsFromTestCase(Baidu)
unittest.TextTestRunner(verbosity=2).run(suite)

执行一个文件所有测试类

if __name__ = '__main':
suite=unittest.TestLoader().loadTestsFromModule(Baidu.py)
unittest.TextTestRunner(verbosity=2).run(suite)

执行一个目录下所有测试用例

suite=unittest.TestLoader().discover(
start_dir=os.path.dirname(__file__),
pattern='test*.py',
top_level_dir=None
)

 

posted @ 2020-10-07 14:39  大碗炸酱面  阅读(132)  评论(0编辑  收藏  举报