unittest是python单元测试框架,类似于JAVA的JUnit框架;
单元测试:是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义。接口测试里面,一个接口可以作为一个单元。
unittest核心:TestFixture(脚手架,做一些启动关闭的清理程序)、TestCase(python中方法)、TestSuite(套件)、TestRunner
2、使用
用import语句引入unittest模块
测试的类都继承TestCase(class UserTestCase(unittest.TestCase))
setUp()测试前的初始化工作
tearDown()测试后的资源清理工作
执行所有用例只运行一次初始化和清理条件,用setUpClass(cls)、tearDownClass(cls)(方法名上标注@classmethod)
注意:
(1)所有类中方法的入参为self,定义方法的变量也要,self.变量
(2)定义测试用例,以"test"开头命名的方法,方法入参为self
(3)unittest.main()方法会搜索该模块下的所有以test开头的测试用例方法,并自动执行
(4)自己写的py文件不能用unittest.py命名,不然后找不到TestCase
(5)用例成功是输出.失败是F
断言(支持自定义报错信息)
跳过用例方法名称上加上:@unittest.skip
日志输出:verbosity默认是1,为0最简洁,不输出每个用例执行结果,2输出用例的详细执行结果unittest.main(verbosity=2)
测试用例执行的顺序是按照ASCII码执行
3、unittest测试套件TestSuite
a)用来确定测试用例的顺序,哪个先执行哪个后执行
b)如果一个class中有四个test开头的方法,则加载到suite中时则有四个测试用例
c)由TestLoader加载TestCase到TeastSuite
d)verbosity参数可以控制执行结果的输出,0是简单报告,1是一般报告,2是详细报告。默认1会在每个成功的用例前面有个”.“每个失败的用例前面有个”F“
注意:
testsuite()方法,调用addTest来加载测试用例:类名(‘方法名’)的集合
addTest()添加一个测试用例(addTest(类名(方法名)))
addTests([类名(方法名),类名(方法名)])添加多个测试用例
例如:suite = unittest.TestSuite() suite.addTest(类名(方法名)) runner=unittest.TextTestRunner(verbosity=2) runner.run(suite)
4、TestLoader多个文件测试用例批量加载
用例加载器,我们通过把用例都存放在这里,然后再通过Suite进行批量执行,但无法对case进行排序
例如:suite = unittest.TestSuite() loader=unittest.TestLoader() suite.addTests(loader.loadTestsFromTestCase(类名))
5、Discover多个文件测试用例批量加载
常见的用例加载
参数:case_dir待执行用例的目录
参数:pattern这是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本
参数:top_level_dir这个是顶层目录的名称,一般默认等于None就行了
当前文件的路径case_path=os.path.join(os.getcwd,"文件名")
例如:unittest.defaultTestLoader.discover(case_path,pattern="*Case.py",top_level_dir=None)
1.当运行以下文档的时候,会报错误
解决方法为:
将unittest.main()换成
if __name__ =='__main__':
unittest.main()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)